您的位置:首页 > 其它

NYOJ - 32(组合数)(搜索水题)

2017-06-04 11:16 344 查看
组合数

时间限制: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

这道题用DFS做,要注意细节,前面的大于后面

#include<stdio.h>
int a[12];
void dfs(int x, int y)
{
for(int i=x; i>=y; i--)
{
a[y] = i;
if(y>1)
dfs(i-1, y-1);
else
{
for(int j=a[0]; j>0; j--)
printf("%d", a[j]);
printf("\n");
}
}
}
int main()
{

int n,r;
scanf("%d%d",&n,&r);
a[0] = r;
dfs(n,r);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  acm模板