LeetCode 39. Combination Sum
类似需要枚举所有解的题目,都是典型的dfs的题目。
本题要求答案里不能有重复的解,因此先将数组排序,dfs里增加一个start参数,来表明开始的下标,防止重复发生。仔细体会一下!
class Solution { public: vector<vector<int>> res; vector<vector<int>> combinationSum(vector<int>& candidates, int target) { sort(candidates.begin(),candidates.end()); vector<int> tmp; dfs(candidates, target, tmp, 0); return res; } void dfs(vector<int>& candidates, int target, vector<int> &tmp, int start){ if (target<0) return; if (target==0) res.push_back(tmp); for (int i=start;i<candidates.size();++i){ tmp.push_back(candidates[i]); dfs(candidates,target-candidates[i],tmp,i); tmp.pop_back(); } } };

浙公网安备 33010602011771号