首页 > 其他 > 详细

NYOJ 32 组合数

时间:2015-06-02 11:16:06      阅读:311      评论:0      收藏:0      [点我收藏+]

用的深搜,在csdn编程挑战赛上碰到过一次


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


#include <iostream>
#include <cstring>

using namespace std;

int n,m;
int ans[12],used[12];

void dfs(int x,int num)
{
	for(int i=x;i>=0;--i)
	{
		if(num==m)
		{
			for(int j=0;j<m;j++)
				cout<<ans[j];
			cout<<endl;
			return;
		}
		if(!used[i])
		{
			used[i]=1;
			ans[num]=i;
			dfs(i-1,num+1);
			used[i]=0;
		}
	}
}
int main()
{
	cin>>n>>m;
	memset(used,0,sizeof(used));
	dfs(n,0);
	return 0;
}     


NYOJ 32 组合数

原文:http://blog.csdn.net/u011694809/article/details/46324597

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!