带你学透回溯算法-组合总和(对应「leetcode」力扣题目:39.组合总和)| 回溯法精讲!_哔哩哔哩_bilibili
class Solution {
public:
vector<int>path;
vector<vector<int>> result;
void dfs(int index,vector<int>&candidates,int sum,int target)
{
//剪枝
if(sum>target)return;
if(sum==target)
{
result.push_back(path);
}
for(int i=index;i<candidates.size();i++)
{
path.push_back(candidates[i]);
sum+=candidates[i];
dfs(i,candidates,sum,target);
path.pop_back();
sum-=candidates[i];
}
}
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
dfs(0,candidates,0,target);
return result;
}
};