1. 程式人生 > >[LeetCode] 39. Combination Sum

[LeetCode] 39. Combination Sum

回溯法即可
void cbhelp(vector<vector<int>> &res,vector<int> &v,int target,int i,vector<int> recp)
{
if(target<0) return;
else if(target==0)
{
res.push_back(recp);
return;
}
for(unsigned int k=i;k<v.size();++k)
{
recp.push_back(v[k]);
cbhelp(res,v,target-v[k],k,recp);
recp.pop_back();
if(target-v[k]<0) return;
}
}
vector<vector<int>> combinationSum(vector<int>& v, int target)
{
sort(v.begin(),v.end());
vector<vector<int>> res;
vector<int> recp;
cbhelp(res,v,target,0,recp);
return res;
}