Leetcode39.Combination_Sum

递归的从大到小尝试
返回条件:总和≥target(若等于则为答案之一)
C++代码

class Solution {
public:
    vector<vector<int>> result;
    vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
        sort(candidates.begin(), candidates.end());
        combinate(candidates, candidates.size() - 1, {}, target);
        return result;
        }
    void combinate(vector<int>& candidates,int pos,vector<int>contain,int target)
    {
        if (target == 0)
            result.push_back(contain);
        if (target < 0)
            return;
        for (int i = 0; i <= pos; i++)
        {
            contain.push_back(candidates[i]);
            combinate(candidates, i, contain, target - candidates[i]);
            contain.pop_back();
        }
    }
};

猜你喜欢

转载自blog.csdn.net/qq_42263831/article/details/82724922
今日推荐