Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.
The same repeated number may be chosen from C unlimited number of times.
Note:
For example, given candidate set 2,3,6,7
and target 7
,
A solution set is:
[7]
[2, 2, 3]
class Solution { public: vector<vector<int>> combinationSum(vector<int>& candidates, int target) { vector<vector<int>>res; vector<int>tmp; sort(candidates.begin(),candidates.end()); helper(candidates,tmp,res,target,0); return res; } void helper(vector<int>&candidates,vector<int>tmp,vector<vector<int>>& res,int target,int start){ if(start>=candidates.size()) return; if(target==0){ res.push_back(tmp); return; } else if(target<0) return ; else{ helper(candidates,tmp,res,target,start+1); tmp.push_back(candidates[start]); helper(candidates,tmp,res,target-candidates[start],start); } } };