24h購物| | PChome| 登入
2009-07-20 20:33:53| 人氣12,067| 回應0 | 上一篇 | 下一篇

生成組合 (遞迴版本)

推薦 0 收藏 0 轉貼0 訂閱站台

因為...用陣列當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;  
}

台長: 來源不明
人氣(12,067) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: 資訊小題目 |
此分類下一篇:萬年曆
此分類上一篇:讀檔、輸出

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文