题目描述:
排列与组合是常用的数学方法,其中组合就是从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)。
输出描述
所有的组合,每一个组合占一行且其中的元素按由小到大的顺序排列,每个元素占三个字符的位置,所有的组合也按字典顺序。
用例输入 1
5 3
用例输出 1
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
我的代码如下:
- #include
- using namespace std;
- int m,n;
- int zt[101]={},a[101]={};
- void dfs(int j){
- if(j==m){
- for(int i=0;i
- printf("%3d",a[i]);
- }
- cout<
- }
- for(int i=1;i<=n;i++){
- if(zt[i]==0&&i>a[j-1]){
- zt[i]=1;
- a[j]=i;
- dfs(j+1);
- zt[i]=0;
- }
- }
- }
- int main(){
- cin>>n>>m;
- dfs(0);
- return 0;
- }
-
相关阅读:
第四代智能井盖传感器:万宾科技智能井盖位移监测方式一览
纹波类型及纹波抑制措施
Mysql 数据恢复逻辑 基于binlog redolog undolog
Go template详解(中)- 变量使用、if语句、迭代(数组、切片、map)、内置函数(比较、逻辑判断、打印、索引、函数调用)
手机储存快满了,怎么备份手机图片和视频到电脑上?
【通过】华为OD机试真题46 - 最长的完全交替连续方波信号
reStructuredText 初学者语法汇总
redis命令学习
英飞凌助攻马自达最新增程序电动车接入富田电机七合一驱动系统 | 百能云芯
Spring Gateway基础知识总结
-
原文地址:https://blog.csdn.net/Annconda/article/details/126910853