Posted on 2007-04-01 21:31
小强摩羯座 阅读(234)
评论(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
}
不过也看到上学期有同学去迅雷面试中就有这个题目的。所以简单不简单看知道不知道,理解的深还是浅。