題目描述:
Given a set of candidate numbers (C) (without duplicates) 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:
- All numbers (including target) will be positive integers.
- The solution set must not contain duplicate combinations.
class Solution {
public:
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
vector<vector<int>> results;
sort(candidates.begin(), candidates.end());
helper(results,vector<int>{},candidates,target,0);
return results;
}
void helper(vector<vector<int>> &results, vector<int> result, vector<int>& c, int target, int index){
if(target == 0){
results.push_back(result);
return;
}
for(int i = index; i < c.size() && target >= c[i]; ++i){
result.push_back(c[i]);
helper(results, result, c, target - c[i], i);
result.pop_back();
}//end of for
}//end of helper
};