1317:【例5.2】组合的输出

简介: 1317:【例5.2】组合的输出

1317:【例5.2】组合的输出

时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r≤n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数。

现要求你用递归的方法输出所有组合。

例如n=5,r=3,所有组合为:

1 2 3   1 2 4   1 2 5   1 3 4   1 3 5   1 4 5   2 3 4   2 3 5   2 4 5   3 4 5

【输入】

一行两个自然数n、r(1<n<21,1≤r≤n)。

【输出】

所有的组合,每一个组合占一行且其中的元素按由小到大的顺序排列,每个元素占三个字符的位置,所有的组合也按字典顺序。

【输入样例】

5 3

【输出样例】

 1  2  3

 1  2  4

 1  2  5

 1  3  4

 1  3  5

 1  4  5

 2  3  4

 2  3  5

 2  4  5

 3  4  5

【来源】

No

1. #include<iostream>
2. #include<cstdio>
3. #include<cmath>
4. using namespace std;
5. int n,r;
6. int a[101]={0},b[101]={0};
7. void search(int m)
8. {
9.  for(int i=1;i<=n;i++){
10.     if((b[i]==0)&&(i>a[m-1])){
11.       b[i]=1;
12.       a[m]=i;
13.       if(m==r){
14.         for(int j=1;j<=r;j++) printf("%3d",a[j]);
15.         printf("\n");
16.       }
17.       search(m+1);
18.       b[i]=0;
19.     }
20.   }
21. }
22. int main()
23. {
24.   cin>>n>>r;
25.   search(1);
26.   return 0;
27. }

 

相关文章
|
1月前
|
JavaScript
写一个函数将N组<>(包含开始和结束),进行组合,并输出组合结果 (js)
写一个函数将N组<>(包含开始和结束),进行组合,并输出组合结果 (js)
13 0
|
1月前
一个16位的数以4位为一组分割,然后将各部分相加获取最终结果。
一个16位的数以4位为一组分割,然后将各部分相加获取最终结果。
|
1月前
|
C++
输入三个数值a,b,c,确定a,b,c能构成三角形需要同时满足三条件:a+b>c,a+c>b,b+c>a,要求编写一个用于判断输入的a,b,c能否构成三角形的程序,若能输出yes,若不能输出no
这是一段包含C++代码和运行结果的描述。代码是一个程序,用于输入三个整数并判断它们是否能构成三角形(a+b&gt;c, a+c&gt;b, b+c&gt;a)。运行结果显示了输出为&quot;YES&quot;或&quot;NO&quot;的情况。
32 0
|
API Serverless 监控
函数组合的N种方式
随着以函数即服务(Function as a Service)为代表的无服务器计算(Serverless)的广泛使用,很多用户遇到了涉及多个函数的场景,需要组合多个函数来共同完成一个业务目标,这正是微服务“分而治之,合而用之”的精髓所在。
2269 0
|
1月前
数字组合 (计蒜客 - T1218)
数字组合 (计蒜客 - T1218)
|
10月前
|
算法 编译器 C语言
C++函数新思想和标准的输入和输出
C++函数新思想和标准的输入和输出
|
11月前
1291:数字组合
1291:数字组合
|
11月前
|
JSON JavaScript 数据格式
查找一组数据中一组或多组数据(filter和find的区别)
查找一组数据中一组或多组数据(filter和find的区别)
65 0
|
Java Maven Ruby
去掉复杂的逻辑计算,get一下Aviator吧
去掉复杂的逻辑计算,get一下Aviator吧
410 0