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 }     

posted on 2012-08-16 21:25  mycapple  阅读(331)  评论(0编辑  收藏  举报

导航