Leetcode39. Combination Sum(q)

文章目录

链接

link

参考

回溯法通用写法

思路

这就是简单背包问题嘛2333,前两天刚写过。不过当时我是用一个数组,对应背包中的物品,0表示不取,1表示取。现在尝试直接把最后取的物品直接用一个数组存储。

code

c++

class Solution {
public:
    void backtrack(vector<vector<int>> &List, vector<int> candidates, int target, int start, vector<int> &temlist){
        if(target == 0)
        {
            List.push_back(temlist);
        }
        else if(target < 0)
        {
            return;
        }
        else
        {
            for(int i = start; i < candidates.size(); i++)
            {
                temlist.push_back(candidates[i]);
                backtrack(List, candidates, target - candidates[i], i, temlist);
                temlist.pop_back();
            }
        }
    }
    vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
        vector<vector<int>> List;
        vector<int> temlist;
        int start = 0;
        backtrack(List, candidates, target, start, temlist);
        return List;
    }
};

这里不会出错吗?(q)

 temlist.push_back(candidates[i]);
 temlist.pop_back();
发布了74 篇原创文章 · 获赞 4 · 访问量 1432

猜你喜欢

转载自blog.csdn.net/weixin_44814121/article/details/102321726