解题思路:回溯法
class Solution {
public:
void do_sum(vector<vector<int>>& result, int cur,int level, int target, vector<int>& candidates, vector<int>& tmp){
if (cur == target)
{
result.push_back(tmp);
return;
}
if (cur > target)return;
for (int i = level; i < candidates.size(); i++)
{
tmp.push_back(candidates[i]);
do_sum(result, cur + candidates[i],i, target, candidates, tmp);
tmp.pop_back();
}
return;
}
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
vector<vector<int>> result;
vector<int> tmp;
do_sum(result, 0,0, target, candidates, tmp);
return result;
}
};