dfs小练习
递归实现指数型枚举
https://ac.nowcoder.com/acm/contest/998/A
代码注释中解释了题目
using namespace std;
int a[20];
int used[20];
int n;
void dfs(int t,int num,int j){//t作为已经选择数的个数 num作为每次要选择数的个数
//j记录上次选择的数字 可以通过此 枚举下一个数字 (题目要求升序)
if(t==num){
for(int i =0;i<num;i++){
cout<<a[i]<<" ";
}
cout<< endl;
return;
}
for(int i =j+1;i<=n;i++){
// if(used[i]){
// a[t]=i;
// used[i]=1;
// }
a[t]=i;//放进数组
dfs(t+1,num,i);//dfs
}
}
int main(){
cin >> n;
// for(int i =0;i<n;i++){
// a[i]=i+1;
// used[i]=0;
// }
for(int i =0;i<=n;i++){
dfs(0,i,0);
}
return 0;
}