NYOJ 32 组合数

地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=32

思路:递归  

 1 #include<stdio.h>

 2 #include<stdlib.h>

 3 int a[100];  //存储大数 

 4 void f(int m, int k)

 5 {

 6     int i,j;

 7     for(i=m;i>=k;i--)

 8     {

 9         a[k]=i;

10         if(k>1)

11         f(i-1,k-1);

12         else

13         {

14             for(j=a[0];j>0;j--)  //这里用a[0]而不用k或者r是因为虽然a[0]和k或r值一样,但a[0]的值是静态的,若用k或者r,那么它们本身在循环中是变化的,就会有些值不能输出 

15             printf("%d",a[j]);

16             putchar('\n');

17         }

18     }    

19 }

20 int main()

21 {

22     int n,r;  //用a[0]存放取几个数 

23     scanf("%d%d",&n,&r);

24     a[0]=r;

25     f(n,a[0]);

26     system("pause");

27     return 0;

28 }     

你可能感兴趣的:(组合)