本文主要是介绍93. 递归实现组合型枚举 刷题笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
与我前面发的递归实现那一题有点相似
可以看看 94. 递归实现排列型枚举 刷题笔记-CSDN博客
思路 用u记录 选到哪一个位置
一旦选完 就输出
该题 要求升序 我们在选数时加入一个条件
大于上一个选择的数即可
依旧是从小到大搜到符合条件的每一个数
代码
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m;
const int N=100;
int st[N];
bool used [N];
void dfs(int u){
if(u>m){
for(int i=1;i<=m;i++){
cout<<st[i];
}
cout<<endl;
return ;
}
for(int i=1;i<=n;i++){
if(!used[i]&&i>st[u-1]){
used[i]=true;
st[u]=i;
dfs(u+1);
used[i]=false;
st[u]=0;
}
}
}
int main(){
cin>>n>>m;
dfs(1);
return 0;
}
这篇关于93. 递归实现组合型枚举 刷题笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!