AcWing_92 递归实现指数型枚举(递归、dfs、模板)

AcWing

92. 递归实现指数型枚举

使用二叉树模拟是否选择该节点,设置0为哨兵,cs[N]数组表示对于每一个节点,是否选择它。

#include <bits/stdc++.h>
using namespace std;
int n;
const int N = 20;
bool cs[N];
void dfs(int u, bool flag){
    cs[u] = flag;
    if(u == n){
        for(int i = 1; i <= n; i++) if(cs[i]) cout << i << ' ';
        cout << '\n';
        return;
    }
    dfs(u + 1, false);
    dfs(u + 1, true);
}
int main(){
    cin >> n;
    dfs(0, true);
    return 0;
}