链接:
https://leetcode-cn.com/problems/combination-sum/submissions/
描述:
示例:
代码:
class Solution {
public:
void DFS(vector<int>& candidates,vector<vector<int>>& rets,vector<int>& ret,
int cursum,int prevPosition,int target)
{
//边界
if(cursum >= target)
{
if(cursum == target) rets.push_back(ret);
return;
}
//从头开始遍历给定数组
for(int i = prevPosition;i<candidates.size();++i)
{
if(candidates[i] > target) continue;
ret.push_back(candidates[i]);
DFS(candidates,rets,ret,cursum+candidates[i],i,target);
ret.pop_back();
}
}
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
vector<vector<int>> rets;
vector<int> ret;
if(candidates.empty()) return rets;
int cursum = 0;
DFS(candidates,rets,ret,cursum,0,target);
return rets;
}
};