216. Combination Sum III

找所有path, DFS。从上而下更新n。

/*
 * @lc app=leetcode id=216 lang=cpp
 *
 * [216] Combination Sum III
 */
class Solution {
public:
    void dfs(const int k, int n, const int cur, const int num, vector<int> &path, vector<vector<int>> &res) {
        if (cur == k) {
            if (n == 0) res.push_back(path);
            return;
        }
        for (int i = num + 1; i <= 9; ++i) {
            path.push_back(i);
            dfs(k, n - i, cur + 1, i, path, res);
            path.pop_back();
        }
    }

    vector<vector<int>> combinationSum3(int k, int n) {
        vector<int> path;
        vector<vector<int>> res;
        dfs(k, n, 0, 0, path, res);
        return res;
    }
};

Last updated