Combination Sum

 

    vector<vector<int> > combinationSum(vector<int> &candidates, int target) {
        // Note: The Solution object is instantiated only once and is reused by each test case.
        sort(candidates.begin(),candidates.end());
        vector<vector<int>> res;
        vector<int> comb;
        dfs(0,candidates,target,comb,res);
        return res;
    }
    
    void dfs(int pos,vector<int>& candidates,int target,vector<int>& comb,vector<vector<int>>& res)
    {
        if(target==0)//注意两者顺序
        {
            res.push_back(comb);
            return;
        }
        if(pos==candidates.size())
            return;
        for(int i=pos;i<candidates.size();i++)
        {
            if(candidates[i]>target)
                break;
            comb.push_back(candidates[i]);
            dfs(i,candidates,target-candidates[i],comb,res);
            comb.pop_back();
        }
    }

  

posted @ 2013-10-10 15:23  summer_zhou  阅读(118)  评论(0编辑  收藏  举报