题目
https://oj.leetcode.com/problems/combination-sum/
分析
DFS,之前总结过很多道同类型的题。
代码
class Solution
{
public:
vector<vector<int>> combinationSum(vector<int> &candidates, int target)
{
if (candidates.size() == 0)
return res;
this->candidates = candidates;
sort(this->candidates.begin(), this->candidates.end());
vector<int> solution;
DFS(solution, 0, target);
return res;
}
void DFS(vector<int> &solution, int start, int target)
{
if (target == 0)
res.push_back(solution);
else
{
for (int i = start; i < candidates.size() && candidates[i] <= target; i++)
{
solution.push_back(candidates[i]);
DFS(solution, i, target-candidates[i]);
solution.pop_back();
}
}
}
private:
vector<int> candidates;
vector<vector<int>> res;
};

本文提供了一种使用深度优先搜索(DFS)解决LeetCode上组合总和问题的方法。通过递归地寻找所有可能的组合来达到目标值,代码实现了有效避免重复组合的策略。
542

被折叠的 条评论
为什么被折叠?



