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

组合数

时间:2015-04-27 21:51:38      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

描述
找出从自然数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的,刚开始的是觉得并不是太难,我开始的想法较为简便,后来发现无法跳出循环体,无法进行下去,没办法只能换方法,之后加上参照别人的代码才ac过

#include<iostream>
#include<string.h>
#include<string>
using namespace std;
int a[100];
void dfs(int n,int r)
{
	int i,j;
	for(i=n;i>=r;i--)
	{
		a[r]=i;
		if(r>1)
			dfs(i-1,r-1);
		else
		{
			for(j=a[0];j>0;j--)
				cout<<a[j];
			cout<<endl;
		}
	}
}
int main()
{
	int n,r;
	while(cin>>n>>r)
	{
		a[0]=r;
		dfs(n,r);

	}

	return 0;
}


组合数

标签:

原文地址:http://blog.csdn.net/phytn/article/details/45315475

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