标签:
题目要求:Combination Sum
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) { // Start typing your C/C++ solution below // DO NOT write int main() function sort(candidates.begin(), candidates.end()); vector<int>::iterator pos = unique(candidates.begin(), candidates.end()); candidates.erase(pos, candidates.end()); vector<vector<int> > ans; vector<int> record; searchAns(ans, record, candidates, target, 0); return ans; } private: void searchAns(vector<vector<int> > &ans, vector<int> &record, vector<int> &candidates, int target, int idx) { if (target == 0) { ans.push_back(record); return; } if (idx == candidates.size() || candidates[idx] > target) { return; } for (int i = target / candidates[idx]; i >= 0; i--) { record.push_back(candidates[idx]); } for (int i = target / candidates[idx]; i >= 0; i--) { record.pop_back(); searchAns(ans, record, candidates, target - i * candidates[idx], idx + 1); } } };
标签:
原文地址:http://www.cnblogs.com/510602159-Yano/p/4279183.html