0x02 A 递归实现指数型枚举
简单双分支 dfs,回撤时记得 pop_back()
即可。
lambda 函数内递归调用自身时要用 std::function<returnType(arguement)>
声明,不能用 auto
。 详见代码
#include <bits/stdc++.h>
using ll = long long;
auto main()->int {
std::cin.tie(nullptr)->sync_with_stdio(false);
int n;
std::cin >> n;
std::vector<int> res;
std::function<void(int)> dfs = [&](int x) {
if (x > n) {
for (auto x : res) {
std::cout << x << " ";
}
std::cout << "\n";
return ;
}
res.push_back(x);
dfs(x + 1);
res.pop_back();
dfs(x + 1);
};
dfs(1);
return 0;
}
注意有 SPJ 哦~
3min