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;
    }
};

  

posted @ 2014-10-12 16:07  zombies  阅读(108)  评论(0编辑  收藏  举报