遞歸實現從n個數中選r個數的組合數
阿新 • • 發佈:2017-12-24
int include 存儲 %d ret please ror smi 遞歸
1 #include <stdio.h> 2 #include <stdlib.h> 3 int a[100], count; 4 void comb(int m, int k) 5 { 6 int i, j; 7 for(i = m; i >= k; --i) 8 { 9 // 用來存儲每個組合中的數據 10 a[k] = i; 11 if(k > 1) 12 comb(i - 1, k - 1); 13 else 14 {15 for(j = a[0]; j > 0; --j) 16 printf("%d ", a[j]); 17 printf("\n"); 18 ++ count; 19 } 20 } 21 } 22 // 從n個數中選r個數的組合 23 int main() 24 { 25 int n, r; 26 count = 0; 27 printf("Please input n and r:\n"); 28 scanf("%d %d", &n, &r);29 if(r > n) 30 printf("input n, r error!"); 31 else 32 { 33 // a[0]僅僅充當一個變量的作用 34 a[0] = r; 35 comb(n, r); 36 } 37 printf("Total numbers : %d", count); 38 return 0; 39 }
- Don‘t cry because it is over, Smile because it happened.
- 不要因為結束而哭泣。微笑吧,因為你曾擁有。
遞歸實現從n個數中選r個數的組合數