link

上一篇差不多的代码,一个小点就是进入到下一个分支的时候记得要 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 +\textbf{\textcolor{#37A01D}{+}}