LeetCode(Combination Sum)

来源:互联网 发布:月光贴吧软件 编辑:程序博客网 时间:2024/05/21 08:40

Combination Sum
深搜:

class Solution {public:    vector<vector<int> > combinationSum(vector<int> &candidates, int target) {        sort(candidates.begin(),candidates.end());        vector<vector<int> > result;        vector<int> path;        dfs(candidates,result,path,0,target);        return result;    }    void dfs(vector<int> &candidates,vector<vector<int> > &result,vector<int> &path,int start,int gap)    {        if(gap==0)        {            result.push_back(path);            return;        }        for(int i=start;i<candidates.size();++i)        {            if(candidates[i]>gap)return;            path.push_back(candidates[i]);            dfs(candidates,result,path,i,gap-candidates[i]);            path.pop_back();        }    }};

Combination Sum II
深搜:

class Solution {public:    vector<vector<int> > combinationSum2(vector<int> &num, int target) {        sort(num.begin(),num.end());        vector<vector<int> > result;        vector<int> path;        dfs(num,result,path,0,target);        return result;    }    void dfs(vector<int> &num,vector<vector<int> > &result,vector<int> &path,int start,int gap)    {        if(gap==0)        {            result.push_back(path);            return;        }        for(int i=start;i<num.size();++i)        {            if(i>start&&num[i]==num[i-1])continue;            if(num[i]>gap)return;            path.push_back(num[i]);            dfs(num,result,path,i+1,gap-num[i]);            path.pop_back();        }    }};
0 0
原创粉丝点击