0
点赞
收藏
分享

微信扫一扫

leetcode39.组合总和C++回溯法

夏天的枫_ 2022-02-14 阅读 29

链接:

https://leetcode-cn.com/problems/combination-sum/submissions/

描述:

在这里插入图片描述

示例:

在这里插入图片描述
在这里插入图片描述

代码:

class Solution {
public:
    void DFS(vector<int>& candidates,vector<vector<int>>& rets,vector<int>& ret,
    int cursum,int prevPosition,int target)
    {
        //边界
        if(cursum >= target)
        {
            if(cursum == target) rets.push_back(ret);
            return;
        }

        //从头开始遍历给定数组
        for(int i = prevPosition;i<candidates.size();++i)
        {
            if(candidates[i] > target) continue;
            ret.push_back(candidates[i]);
            DFS(candidates,rets,ret,cursum+candidates[i],i,target);
            ret.pop_back();
        }

    }

    vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
        vector<vector<int>> rets;
        vector<int> ret;
        if(candidates.empty()) return rets;
        int cursum = 0;
        DFS(candidates,rets,ret,cursum,0,target);
        return rets;
    }
};
举报

相关推荐

0 条评论