2009-07-20 20:33:53來源不明
生成組合 (遞迴版本)
因為...用陣列當index太麻煩,也難懂,用遞迴幫忙吧!
範例輸入:
5 3 (C 5取3)
範例輸出:
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5
/*********************************************************/
#include<stdio.h>
#include<stdlib.h>
int way[1001]={0};
int n,m;
void make (int now,int a,int n,int m)
{
int b=a,c;
if(now==m+1)
{
for(c=1;c<=m;c++)
printf("%d ",way[c]);
printf("\n");
return;
}
else
for(b=a;b<=n;b++)
{
way[now]=b;
make(now+1,b+1,n,m);
}
}
main()
{
while(scanf("%d %d",&n,&m)==2)
make(1,1,n,m);
return 0;
}