NYOJ 32(组合数)
组合数
//唐甲希 #include<stdio.h> #include<stdlib.h> int a[10]; void fun(int n,int k) { int i,j; for(i=n;i>0;--i)//每个递归里也有这个循环!!! {
//printf("%d%d\n",i,k); a[k]=i; if(k>1 ) fun(i-1,k-1);//递归,不是fun(n-1,k-1),否则会重复的 else { for(j=a[0];j>0 ;--j) printf("%d",a[j]); printf("\n"); } } } int main() { int n,k; scanf("%d%d",&n,&k); a[0]=k; fun(n,k); //system("pause"); return 0; }
时间限制:3000 ms | 内存限制:65535 KB
难度:3
- 描述
- 找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。
- 输入
- 输入n、r。
- 输出
- 按特定顺序输出所有组合。
特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。 - 样例输入
-
5 3
- 样例输出
-
543 542 541 532 531 521 432 431 421 321
作者:火星十一郎
本文版权归作者火星十一郎所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.