NYOJ 32 组合数

来源:互联网 发布:jquery 二维数组 push 编辑:程序博客网 时间:2024/06/05 22:45

组合数

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述
找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。
输入
输入n、r。
输出
按特定顺序输出所有组合。
特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。
样例输入
5 3
样例输出
543542541532531521432431421321
#include<cstdio>  #include<cstring>  #include<algorithm>  #include<iostream>  #include<string>  #include<vector>  #include<stack>  #include<bitset>  #include<cstdlib>  #include<cmath>  #include<set>  #include<list>  #include<deque>  #include<map>  #include<queue>  using namespace std;int n, r;int a[15];void dfs(int num,int count){//简单深搜,我们每一级的值是逆字典序查找的,注意里面含有两个判定条件,i>0以及count==r。if (count == r) {for (int i = 0; i < count; i++)cout << a[i];cout << endl;return;}for (int i = num; i > 0; i--) {a[count] = i;dfs(i-1, count+1);}}int main() {cin >> n >> r;dfs(n, 0);return 0; }