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
作者:火星十一郎
本文版权归作者火星十一郎所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

浙公网安备 33010602011771号