算法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;
}
posted @ 2022-05-12 20:04  open520  阅读(31)  评论(0)    收藏  举报