这题对着答案输,对照了很久,竟然都不知道哪里错了,好烦啊
class Solution{
public:
void dfs(vector>& ans,vector& ansans,vector& candidates,int target,int idx)
{
if(candidates.size()==idx) return;
if(target==0) {ans.emplace_back(ansans); }return;
dfs(ans,ansans,candidates,target,idx+1);
if(target-candidates[idx]>=0)
{
ansans.emplace_back(candidates[idx]);
dfs(ans,ansans,candidates,target-candidates[idx],idx);
ansans.pop_back();}
}
vector> combinationSum(vector& candidates, int target) {
vector> ans;
vector ansans;
dfs(ans,ansans,candidates,target,0);
return ans;
}
};
这是我自己的答案
注意,一个是有两个dfs,然后vector定义可以放在主函数里,然后就是if的括号
如果if后面跟两个语句和return,return要放在括号外面
pop_back是删除的意思
pop_back是不可少的,要不然输出的东西有很多
现在知道问题错在哪里了,返回的return要在第二个if的括号内