描述
从1~n这n个整数中随机选取任意多个,输出所有可能的选择方案。
输入
输入一个整数n
输出
每行输出一种方案。
同一行内的数必须升序排列,相邻两个数用恰好1个空格隔开。
对于没有选任何数的方案,输出空行。
实现:
#include<iostream>
#include<cstdio>
using namespace std;
const int N = 15;
int n;
int s[N]; // 用来记录每个点的状态: 0 表示待考虑,1 表示选择该数, 2 表示不选
void dfs(int x) {
if (x == n) {
for (int i = 0; i <= n; i++) {
if (s[i] == 1) {
printf("%d ", i + 1);
}
}
printf("\n");
return;
}
s[x] = 2;
dfs(x + 1);
s[x] = 0;
s[x] = 1;
dfs(x + 1);
s[x] = 0;
}