个人思路总结:
此题用回溯法解决,其实个人感觉就是递归吧。
代码如下:
class Solution {
private:
vector<vector<int>> result;
vector<int> tmp;
public:
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
find(candidates,target,0,candidates.size()-1);
return result;
}
void find(vector<int>& candidates, int target, int start, int end)
{
if(start>end||target<0)
return;
if(target==0)
result.push_back(tmp);
else
{
for(int i=start;i<=end;i++)
{
tmp.push_back(candidates[i]);
find(candidates,target-candidates[i],i,end);
tmp.pop_back();
}
}
}
};