自学内容网 自学内容网

LeetCode39:组合总和

题目链接:39. 组合总和 - 力扣(LeetCode)

代码如下:
 

class Solution {
private:
    vector<vector<int>> result;
    vector<int> path;
    void backtracking(vector<int>& candidates, int target, int sum, int startIndex)
    {
        if(sum > target)
        {
            return ;
        }
        if(target == sum)
        {
            result.push_back(path);
            return ;
        }
        for(int i = startIndex; i < candidates.size(); i++)
        {
            sum += candidates[i];
            path.push_back(candidates[i]);
            backtracking(candidates, target, sum, i);
            sum -= candidates[i];
            path.pop_back();
        }
    }
public:
    vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
        result.clear();
        path.clear();
        backtracking(candidates, target, 0, 0);
        return result;
    }
};

这个代码其实就是和前面的组合总是是一样的,但是呢,主要一点是,这个for循环里面的backtracking的不是i + 1了,而是i,因为当前i可以去取当前的元素,而i + 1是不能去当前的元素的。


原文地址:https://blog.csdn.net/Ricky_youngone/article/details/143833743

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!