//39. 组合总和
//使用dfs
class Solution {
public:
vector<vector<int>>ans;//记录答案
vector<int>s;//存储原数组
vector<int>stk;//存储选择的内容
//遍历到了it节点,之前的和为sum,目标值是target
void dfs(int it, int sum, const int& target) {
if (sum == target) {//如果相等,说明stk存储的数据符合条件
ans.emplace_back(stk);//添加
return;
}
if (sum > target) return;//如果超了,说明不符合,没必要继续dfs
for (int i = it; i < s.size(); i++) {//遍历所有元素
stk.emplace_back(s[i]);
dfs(i, sum + s[i], target);
stk.pop_back();
}
}
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
s = candidates;
dfs(0, 0, target);
return ans;
}
};
LeetCode39. 组合总和
最新推荐文章于 2024-09-24 08:39:28 发布