See More

class Solution { public: void helper(vector& candidates,vector>& ans,vector& combination,int target,int start){ if(target==0){ ans.push_back(combination); return; } for(int i=start;itarget) break; combination.push_back(candidates[i]); helper(candidates,ans,combination,target-candidates[i],i); combination.pop_back(); } } vector> combinationSum(vector& candidates, int target) { vector> ans; vector combination; sort(candidates.begin(),candidates.end()); helper(candidates,ans,combination,target,0); return ans; } };