黑马程序员技术交流社区

标题: 入学基础测试题之字符串全排列问题的详细讲解 [打印本页]

作者: 周博文    时间: 2015-8-10 18:53
提示: 该帖被管理员或版主屏蔽
作者: 黄蒙    时间: 2015-8-10 19:14
我也这道题- -难得发指啊。。光字符串里三个元素的全排列就想死了
作者: 周博文    时间: 2015-8-10 19:48
黄蒙 发表于 2015-8-10 19:14
我也这道题- -难得发指啊。。光字符串里三个元素的全排列就想死了

涉及到算法的题都不简单,我做这题的时候想了好久,但还是不会,所以去Google搜了一篇类似问题的文档,看完之后茅塞顿开。
作者: _town    时间: 2015-8-10 19:56
总结的不错
作者: 黄蒙    时间: 2015-8-10 20:26
周博文 发表于 2015-8-10 19:48
涉及到算法的题都不简单,我做这题的时候想了好久,但还是不会,所以去Google搜了一篇类似问题的文档,看 ...

然而递归我根本看不懂啊。。
作者: 黄蒙    时间: 2015-8-10 20:27
周博文 发表于 2015-8-10 19:48
涉及到算法的题都不简单,我做这题的时候想了好久,但还是不会,所以去Google搜了一篇类似问题的文档,看 ...

public class TestQuestion {
                static int[] bits = new int[] { 1, 2, 3, 4, 5 };

                public static void main(String[] args) {
                        sort("", bits);
                }
               
                private static void sort(String prefix, int[] a) {
                        if (a.length == 1) {
                                System.out.println(prefix + a[0]);
                        }
                        for (int i = 0; i < a.length; i++) {
                                sort(prefix + a, copy(a, i));
                        }
                }
               
                private static int[] copy(int[] a,int index){
                        int[] b = new int[a.length-1];
                        System.arraycopy(a, 0, b, 0, index);
                        System.arraycopy(a, index+1, b, index, a.length-index-1);
                        return b;
                }
        }
这是我在网上看的全排列的方法,但是中间那个递归方法我看一会就给绕晕了。。
作者: 周博文    时间: 2015-8-10 23:16
黄蒙 发表于 2015-8-10 20:27
public class TestQuestion {
                static int[] bits = new int[] { 1, 2, 3, 4, 5 };

这个解法和我那个差不多,我觉得如果看不懂递归的话用eclipse的Debug单步调试一下可能会有助于理解,或者在纸上写个递归过程变量的变化规律,就容易理解了
作者: vipsong    时间: 2015-8-11 12:12
我得mark一下,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2