题意
给一串数,找出所有和为target的组合,每个数可以被重复用
思路
暴力搜索即可
时间复杂度:O(n!)
代码
class Solution {
public:
vector<vector<int> > res;
vector<int> temp;
void dfs(int now, int sum, vector<int>& candidates, int target)
{
if (sum > target) return ;
if (sum == target)
{
res.push_back(temp);
return ;
}
for (int i = now; i < candidates.size(); i++)
{
sum += candidates[i];
temp.push_back(candidates[i]);
dfs(i, sum, candidates, target);
sum -= candidates[i];
temp.pop_back();
}
}
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
dfs(0, 0, candidates, target);
return res;
}
};