算法5
题解:
对于指数型枚举一个数只有选与不选的区分,所以我们从第一个位置,枚举到第n个位置,在第i个位置上,i这个数只有选与不选的区别,选的话我们将st[i]记录为i;不选记录为-1;一直到u>n时枚举了所有的位置,此时输出即可,要注意的是在输出完后要记得return掉
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=20;
int n;
int st[N];
void dfs(int u){
if(u>n){
for(int i=1;i<=n;i++){
if(st[i]==1) cout<<i<<" ";
}
cout<<endl;
return ;
}
st[u]=1;
dfs(u+1);
st[u]=-1;
dfs(u+1);
}
int main(){
cin>>n;
dfs(1);
return 0;
}

浙公网安备 33010602011771号