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;
}