posts - 195, comments - 34, trackbacks - 0, articles - 1

输出排列的递归实现

Posted on 2007-04-01 21:31 小强摩羯座 阅读(231) 评论(0)  编辑  收藏
对于组合的递归算法,我没有想出来。我不我会抱持这个问题的。

排列(全排列)的递归算法一般的书上都有其算法,我只是写出来玩玩。递归的理解还是感觉有些难。
 1//产生排列的递归算法
 2//    1.n==1,Perm(R) = (r)
 3//    2.n > 1, perm(R) = (r1)perm(R1), (r2)Perm(R2);
 4    static int counter = 1;
 5    static void perm(char []list, int k, int m)
 6    {
 7        if(k == m)
 8            System.out.println((counter++)+ " :"+ Arrays.toString(list));
 9        else
10        {
11            for(int i=k; i <= m;i++)
12            {
13                swap(list,i, k);            
14                perm(list, k+1, m);            
15                swap(list,i, k);
16            }

17        }

18    }

19    static void swap(char[] list, int i, int k)
20    {
21        char tmp;
22        tmp = list[k];
23        list[k] = list[i];
24        list[i] = tmp;
25    }
不过也看到上学期有同学去迅雷面试中就有这个题目的。所以简单不简单看知道不知道,理解的深还是浅。


只有注册用户登录后才能发表评论。


网站导航: