码迷,mamicode.com
首页 > 其他好文 > 详细

NYOJ 32 组合数

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

标签:c++   acm   

用的深搜,在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 组合数

标签:c++   acm   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!