递归实现指数型枚举,也就是2的n次方,注意回溯时还原现场,
#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#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 v;
void solve(int x) {
if (x == n + 1) {
for (int i = 0; i < (int) v.size(); i++) {
cout << v[i] << " ";
}
cout << endl;
return;
}
solve(x + 1);
v.pb(x);
solve(x + 1);
v.pop_back();
}
int main() {
cin >> n;
solve(1);
return 0;
}