递归实现指数型枚举,这个应该是最简单的模型,枚举1到n,每个数都有选或者不选两种情况,注意还原现场,回溯是什么意思还是不懂
#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define mk make_pair
#define sz(x) ((int) (x).size())
#define all(x) (x).begin(), (x).end()
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pa;
int n;
vi chosen;
void solve(int x) {
if (x == n + 1) {
for (int i = 0; i < sz(chosen); i++) {
cout << chosen[i] << (i < sz(chosen) - 1 ? " " : "");
}
cout << endl;
return;
}
solve(x + 1);
chosen.pb(x);
solve(x + 1);
chosen.pop_back();
}
int main() {
cin >> n;
solve(1);
return 0;
}