首页 > 其他 > 详细

组合数

时间:2015-04-27 21:48:48      阅读:104      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!