classSolution { public: vector<vector<int>> combinationSum(vector<int>& candidates, int target) { sum = 0; dfs(candidates, 0, target);
return ans; }
private: voiddfs(vector<int>& candidates, int begin, int target){ if (sum > target) return; elseif (sum == target) { ans.push_back(subAns); return; }
int n = candidates.size(); for (int i = begin; i < n; i++) { subAns.push_back(candidates[i]); sum += candidates[i]; dfs(candidates, i, target); subAns.pop_back(); sum -= candidates[i]; } }
vector<vector<int>> ans; vector<int> subAns; int sum; };