0x02 B 递归实现组合型枚举
和上一篇差不多的代码,一个小点就是进入到下一个分支的时候记得要 dfs(x + 1)
差点被坑
新 get 到一个 for_each
函数的用法,一般用于简化短 for 循环:
for_each(iterator_begin(), iterator_end(), process_function)
其中 process_function 可以传入仿函数,函数,lambda 函数等。
#include <bits/stdc++.h>
using ll = long long;
auto main()->int {
std::cin.tie(nullptr)->sync_with_stdio(false);
int n, m;
std::cin >> n >> m;
std::vector<int> ans;
std::function<void(int)> dfs = [&](int x) {
if (ans.size() == m) {
std::for_each(ans.begin(), ans.end(), [&](int x) {
std::cout << x << " ";
});
std::cout << "\n";
return ;
}
if (x > n) {
return ;
}
ans.push_back(x);
dfs(x + 1);
ans.pop_back();
dfs(x + 1);
};
dfs(1);
return 0;
}
4min