nyist 组合数

题目描述

找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。

输入

输入n、r。

输出

按特定顺序输出所有组合。
特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。

样例输入

5 3

样例输出

543
542
541
532
531
521
432
431
421
321

AC代码:

#include<iostream>
#include<cstdio>
using namespace std;
int n,r;
int a[10];
int DFS(int x,int y){
	int i;
	if(y==0){
		for(i=r;i>=1;i--)
		printf("%d",a[i]);
		printf("\n");
	}
	else{
		for(i=x;i>=y;i--){
			a[y]=i;
			DFS(i-1,y-1);
		}
	}
} 
int main()
{
	while(~scanf("%d %d",&n,&r))
	DFS(n,r);
	return 0; 
}


你可能感兴趣的:(nyist 组合数)