组合总和
题解:
代码如下:
class Solution {
public:
vector<vector<int>> ans;
vector<int> path;
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
dfs(candidates,0,target);
return ans;
}
void dfs(vector<int>&a,int u,int target)
{
if(target < 0) return; //不满足
if(target == 0){ //该方案合法,记录到path中
ans.push_back(path);
return;
}
for(int i = u;i < a.size();i++)
{
if(a[i] <= target){
path.push_back(a[i]);
dfs(a,i,target - a[i]); //用target - a[i]来算,减到0就可以
path.pop_back(); //恢复
}
}
}
};