leetcode39——Combination Sum

题目大意:在给出的数组中找出数字的组合(数字允许重复使用,找出的组合不能重复),使得他们相加得到目标数字

分析:dfs。dfs层层搜索记录路径即可。

代码:

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

 

阅读更多

没有更多推荐了,返回首页