题目描述
从 1∼n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。
样例
一个整数 n。
C++ 代码
这道题不考虑排列,即不考虑顺序,用递归,每次枚举比上一次递归大1的数,直到u==cnt,这个时候再把所有的数数出来,效果是升序的。
#include <iostream>
#include <vector>
using namespace std;
const int N = 18;
int cnt, n;
bool st[N];
vector<int> p;
void dfs (int u) {
if (u == cnt) {
for (auto t : p) cout << t << " ";
cout << endl;
return ;
}
for (int i = 1; i <= n; i++) {
if (!st[i]) {
st[i] = true;
p.push_back (i);
dfs (u + 1);
p.pop_back();
st[i] = false;
}
}
}
int main () {
cin >> n;
for (int i = 1; i <= n; i++) {
cnt = i;
dfs (0);
}
return 0;
}