Posted on 2007-04-01 21:31
小強(qiáng)摩羯座 閱讀(234)
評(píng)論(0) 編輯 收藏
對(duì)于組合的遞歸算法,我沒(méi)有想出來(lái)。我不我會(huì)抱持這個(gè)問(wèn)題的。
排列(全排列)的遞歸算法一般的書(shū)上都有其算法,我只是寫(xiě)出來(lái)玩玩。遞歸的理解還是感覺(jué)有些難。
1
//產(chǎn)生排列的遞歸算法
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
}
不過(guò)也看到上學(xué)期有同學(xué)去迅雷面試中就有這個(gè)題目的。所以簡(jiǎn)單不簡(jiǎn)單看知道不知道,理解的深還是淺。