题目链接
http://noi-test.zzstep.com/contest/0x00%E3%80%8C%E5%9F%BA%E6%9C%AC%E7%AE%97%E6%B3%95%E3%80%8D%E4%BE%8B%E9%A2%98/0301%20%E9%80%92%E5%BD%92%E5%AE%9E%E7%8E%B0%E6%8C%87%E6%95%B0%E5%9E%8B%E6%9E%9A%E4%B8%BE
分析
跑DFS,每次分选当前元素和不选递归下去
AC代码
#include <cstdio>
const int maxn = 20;
int n, num[maxn], tot;
void dfs(int i) {
if (i == n + 1) {
for (int i = 1; i <= tot; ++i) printf("%d ", num[i]);
puts("");
return;
}
dfs(i + 1);
num[++tot] = i;
dfs(i + 1);
--tot;
}
int main() {
scanf("%d", &n);
dfs(1);
return 0;
}