leetcode子集和问题
2013-05-15 00:47
246 查看
Combination Sum
回溯法应用
数组不含重复元素,结果可含重复元素。回溯法。
自己写的代码:
给出的集合里有重复元素,但每一个元素只能用一次
回溯法应用
数组不含重复元素,结果可含重复元素。回溯法。
自己写的代码:
class Solution { public: vector<vector<int>>v; vector<int>v1; int sum; vector<vector<int> > combinationSum(vector<int> &candidates, int target) { sort(candidates.begin(),candidates.end()); v.clear(); sum=0; backtrace(candidates,target,0); sort(v.begin(),v.end()); return v; } void backtrace(vector<int> &candidates, int target,int dep) { if(sum==target) { if(count(v.begin(),v.end(),v1)==0)v.push_back(v1); } if(dep==candidates.size()) return; if(dep<candidates.size()) { int j=(target-sum)/candidates[dep]; for(int i=0;i<j;i++)/可加入j次 { sum+=candidates[dep]; v1.push_back(candidates[dep]); backtrace(candidates,target,dep+1); } for(int i=0;i<j;i++) { sum-=candidates[dep]; v1.pop_back(); } backtrace(candidates,target,dep+1);//不包含此元素时 } } };
给出的集合里有重复元素,但每一个元素只能用一次
class Solution { public: vector<vector<int>>v; vector<int>v1; int sum; vector<vector<int> > combinationSum2(vector<int> &candidates, int target) { sort(candidates.begin(),candidates.end()); v.clear(); sum=0; backtrace(candidates,target,0); sort(v.begin(),v.end()); return v; } void backtrace(vector<int> &candidates, int target,int dep) { if(sum==target) { if(count(v.begin(),v.end(),v1)==0)v.push_back(v1); } if(dep==candidates.size()) return; if(dep<candidates.size()&&sum<target) { sum+=candidates[dep]; v1.push_back(candidates[dep]); backtrace(candidates,target,dep+1); sum-=candidates[dep]; v1.pop_back(); backtrace(candidates,target,dep+1); } } };
相关文章推荐
- 子集系列(一) 传统subset 问题,例 [LeetCode] Subset, Subset II, Bloomberg 的一道面试题
- [LeetCode系列]子集枚举问题[有重复元素]
- Subsets 子集系列问题 leetcode
- 两种回溯方法解决子集问题的思路 leetcode 78. Subsets
- Subsets II [leetcode] 从获取子集的递归和循环方法说起,解决重复子集的问题
- [LeetCode系列]子集枚举问题[无重复元素]
- leetcode_383. Ransom Note-近似子串问题
- leetcode 319 灯泡问题
- C++ 写leetcode遇到的一些问题总结Reverse Words in a String
- LeetCode总结,二叉树各种类型问题小结
- [LeetCode] Remove Duplicates from Sorted List - 链表问题
- 求一个集合的所有子集问题
- Java递归解决子集求和问题
- 【leetcode】Reverse Integer(考虑溢出问题)
- 【Leetcode】:242. Valid Anagram问题 in Go语言
- leetcode中MoveZeroes问题1ms→0ms
- Leetcode战记 day3 移零问题
- Leetcode 78. 子集
- leetcode-51/52-N皇后问题
- Leetcode中的回溯法题目总结:八皇后问题; unique path问题;subsets问题