zoukankan      html  css  js  c++  java
  • [leetcode]Combination Sum

    使用深度优先搜索解决。

    #include <iostream>
    #include <string>
    #include <vector>
    using namespace std;
    
    class Solution {
    public:
        vector<vector<int> > combinationSum(vector<int> &candidates, int target) {
            vector<int> tmpresult;
            tmpresult.clear();
            combinationSumCore(candidates, 0, target, tmpresult);
            
            return res;
        }
    
        void combinationSumCore(vector<int> &candidates, int curr, int target, vector<int> tmpresult){
            if (0 == target){
                res.push_back(tmpresult);
                return;
            }
            
            if (curr == candidates.size())
                return;
    
            for (int i = 0; i <= target/candidates[curr]; i++){
                    vector<int> tmpresult1(tmpresult);
                    for (int j = 0; j < i; j++)
                        tmpresult1.push_back(candidates[curr]);
                    combinationSumCore(candidates, curr+1, target-i*candidates[curr], tmpresult1);
            }
        }
    private:
        vector<vector<int> > res;
    };
    
    int main()
    {
        vector<int> vec;
        vec.push_back(1);
        Solution s;
        s.combinationSum(vec, 2);
        return 0;
    }

    EOF

  • 相关阅读:
    fwt
    fft,ntt
    loj6077
    高维前缀和
    hihocoder 1496 寻找最大值
    HDU 5977 Garden of Eden
    扩展crt
    有标号的DAG计数I~IV
    BZOJ 3160 万径人踪灭
    Codeforces Round #524 (Div. 2) F
  • 原文地址:https://www.cnblogs.com/lihaozy/p/2828261.html
Copyright © 2011-2022 走看看