LeetCode-Combination Sum-组合加和-回溯
https://oj.leetcode.com/problems/combination-sum/
比较节省空间的方法是DFS回溯。犯了个小错忘记先排序。
class Solution {
public:
int n,m;
vector<int> ca;
vector<vector<int> > tot;
vector<int> cur;
void Solve(int p,int t){
if (t==0){
tot.push_back(cur);
return;
}
if (p==n) return;
if (ca[p]<=t){
cur.push_back(ca[p]);
Solve(p,t-ca[p]);
cur.pop_back();
}
Solve(p+1,t);
}
vector<vector<int> > combinationSum(vector<int> &candidates, int target) {
ca=candidates;
n=ca.size();
sort(ca.begin(),ca.end());
Solve(0,target);
return tot;
}
};
浙公网安备 33010602011771号