组合数
时间限制: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 <cmath>
#include <cstdio>
#include <iostream>
#include <cstring>
05.#include <algorithm>
06.using namespace std;
07.int num[12],a,b;
08.void dfs(int y,int r)
09.{int i,j;
10.if(r==0)
11.{
12.for(i=b;i>=1;i--)
13.cout<<num[i];
14.cout<<endl;
15.}
16.else
17.{
18.for(i=y;i>=r;i--)
19.{
20.num[r]=i;
21.dfs(i-1,r-1);
22.}
23.}
24.}
25.int main()
26.{
27.while(cin>>a>>b)
28.dfs(a,b);
29.}