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;  
}

上一篇:讀檔、輸出

下一篇:萬年曆