递归实现指数型枚举
题目描述:

代码:
#include<bits/stdc++.h>
using namespace std;
int n;
int a[105];
void dfs(int u){
if(u>n){
for(int i=1;i<=n;i++)if(a[i]==1)cout<<i<<" ";
cout<<endl;
return;
}
a[u]=1;//1表示选择当前数
dfs(u+1);
a[u]=0;//恢复现场
a[u]=2;//2表示不选择当前数
dfs(u+1);
a[u]=0;//恢复现场
}
int main(){
cin>>n;
dfs(1);
return 0;
}

浙公网安备 33010602011771号