力扣-回溯-39 组合总和
思路
和之前几道组合的题目差不多,不同的是允许元素重复,所以要求单层递归里的for循环从当前的index开始即可
代码
class Solution {
public:
int curSum;
vector<int> path;
vector< vector<int> > result;
void backtracking(vector<int>& candidates, int curIndex, int target){
if(curSum > target) return;
if(curSum == target){
result.push_back(path);
return;
}
for(int i = curIndex; i < candidates.size(); i++){
path.push_back(candidates[i]);
curSum += candidates[i];
backtracking(candidates, i, target);
path.pop_back();
curSum -= candidates[i];
}
return;
}
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
backtracking(candidates, 0, target);
return result;
}
};