leetcode 日经贴,Cpp code -Combination Sum

来源:互联网 发布:小世界网络matlab 编辑:程序博客网 时间:2024/05/21 17:53

Combination Sum

class Solution {public:    void dfs(const vector<int> &candidates, vector<pair<int,int> > ¤t, int pos, int target, vector<vector<int> > &ans) {        if (target == 0) {            vector<int> currentans;            for (int i = 0; i < current.size(); ++i) {                for (int j = 0; j < current[i].second; ++j) {                    currentans.push_back(current[i].first);                }            }            ans.push_back(currentans);            return;        }        if (pos >= candidates.size() || target < candidates[pos]) {            return;        }        //add zero        dfs(candidates, current, pos + 1, target, ans);        for (int i = 1; i * candidates[pos] <= target; ++i) {            current.push_back(make_pair(candidates[pos], i));            dfs(candidates, current, pos + 1, target - candidates[pos] * i, ans);            current.pop_back();        }    }        vector<vector<int>> combinationSum(vector<int>& candidates, int target) {        vector<vector<int> > ans;        vector<pair<int, int> > current;        sort(candidates.begin(), candidates.end());        dfs(candidates, current, 0, target, ans);        return ans;    }};


0 0
原创粉丝点击