less than 1 minute read

<-M 77> Combinations

class Solution {
public:
    vector<vector<int>> combine(int n, int k) {
        vector<int> path;
        vector<vector<int>> result;
        dfs(n, k, 1, 0, path, result);
        return result;
    }
private:
    void dfs(int n, int k, int start, int curr,
            vector<int>& path, vector<vector<int>>& result) {
        if(curr == k)
            result.push_back(path);
        for(int i = start; i <= n; i++) {
            path.push_back(i);
            dfs(n, k, i + 1, curr + 1, path, result);
            path.pop_back();
        }
    }
};