版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/l718531794/article/details/85118593
题目地址:https://leetcode-cn.com/problems/combination-sum/
思路:dfs,排序剪枝
AC代码:
class Solution {
public:
vector<vector<int>>ans;
vector<int>res;
void solve(vector<int>& candidates, int target,int k){
if(target==0){
ans.push_back(res);
return;
}
int n = candidates.size();
for(int i=k;i<n;i++){
if(target>=candidates[i]){
res.push_back(candidates[i]);
solve(candidates,target-candidates[i],i);
res.pop_back();
}else
return;
}
}
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
sort(candidates.begin(),candidates.end());
solve(candidates,target,0);
return ans;
}
};