NYOJ-32-组合数
2017-04-14 10:09
260 查看
时间限制:3000 ms |
内存限制:65535 KB
难度:3
描述 找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。输入输入n、r。输出按特定顺序输出所有组合。
特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。样例输入
样例输出
#include <stdio.h>
void fun(int m,int n,int ans)
{
if(n==0)
{
printf("%d\n",ans);//找到答案后就一下子输出
return;
}
for(int i=m;i>=n;i--)
{
fun(i-1,n-1,ans*10+i);//学长教的小小的套路,嘿嘿
}
}
int main(int agrc,const char *argv[])
{
int m,n;
scanf("%d%d",&m,&n);
fun(m,n,0);
return 0;
}
内存限制: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刚开始写的时候我想成让它们一个一个的输出,就用到了数组,后来发现不行,我不会写了,又想到他这个跟POJ上面那个放苹果的题有点相似,后来又听我们学长讲找到一组答案后可以一下子输出,不要让他们一个一个的输出。
#include <stdio.h>
void fun(int m,int n,int ans)
{
if(n==0)
{
printf("%d\n",ans);//找到答案后就一下子输出
return;
}
for(int i=m;i>=n;i--)
{
fun(i-1,n-1,ans*10+i);//学长教的小小的套路,嘿嘿
}
}
int main(int agrc,const char *argv[])
{
int m,n;
scanf("%d%d",&m,&n);
fun(m,n,0);
return 0;
}
相关文章推荐
- NYOJ 题目32 组合数(非图DFS)
- nyoj 32-组合数(DFS)
- NYOJ-32组合数(数的全排列,简单dfs)
- nyoj 32 组合数(DFS)
- nyoj 32 组合数
- NYOJ-32组合数(递归实现)
- nyoj 32 组合数<水>
- nyoj 32 组合数
- NYOJ 32 组合数
- nyoj 32-组合数
- NYOJ 32 组合数
- 组合数 【nyoj-32】【stl】【dfs】
- NYOJ32:组合数(DFS入门)
- NYOJ 32.组合数(递归——组合数)
- NYOJ 题目32组合数(dfs)
- NYOJ32组合数
- NYOJ 32 组合数
- NYOJ 32 组合数
- NYOJ-32 组合数 AC
- nyoj 32-组合数(搜索)