LeetCode39:组合总和
代码如下:
class Solution {
private:
vector<vector<int>> result;
vector<int> path;
void backtracking(vector<int>& candidates, int target, int sum, int startIndex)
{
if(sum > target)
{
return ;
}
if(target == sum)
{
result.push_back(path);
return ;
}
for(int i = startIndex; i < candidates.size(); i++)
{
sum += candidates[i];
path.push_back(candidates[i]);
backtracking(candidates, target, sum, i);
sum -= candidates[i];
path.pop_back();
}
}
public:
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
result.clear();
path.clear();
backtracking(candidates, target, 0, 0);
return result;
}
};
这个代码其实就是和前面的组合总是是一样的,但是呢,主要一点是,这个for循环里面的backtracking的不是i + 1了,而是i,因为当前i可以去取当前的元素,而i + 1是不能去当前的元素的。
原文地址:https://blog.csdn.net/Ricky_youngone/article/details/143833743
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!