AcWing 92 递归实现指数型枚举

题目

AC代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<bits/stdc++.h>
using namespace std;

int n;// n个数

vector<int> chosen;

void calc(int x){
//边界输出
if (x == (n + 1) ) {
for(auto i = 0; i < chosen.size(); ++i) {
cout << chosen[i] << " ";
}
cout << '\n';
return;
}
// 不选x-分支
calc(x + 1);
// 选择x-分支
chosen.push_back(x); // 记录x已被选择
calc(x + 1); // 递归求解子a问题
chosen.pop_back(); // 回溯
}

int main(){
cin >> n;
calc(1);
}