(三)回溯算法:组合总和

leetcode:216组合总和

与77题的差别就是这题有了优化

class Solution {
public:
    vector<vector<int>> result;
    vector<int> path;
    int sum = 0;
    void backtracking(int target, int k, int startIndex) {
        if (sum > target) {return;}//后面都比它大直接返回
        if (path.size() == k) {
            if (sum == target) {
                result.push_back(path);
            }

            return;        
        }
        for (int i = startIndex; i <= 9; i++) {
            sum += i;
            path.push_back(i);//传进去
            backtracking(target, k, i + 1);
            sum -= i;
            path.pop_back();

        }
    }
    vector<vector<int>> combinationSum3(int k, int n) {
        backtracking(n, k, 1);
        return result;
    }
};

posted @ 2023-03-04 09:50  壹剑霜寒十四州  阅读(10)  评论(0编辑  收藏  举报