zoukankan      html  css  js  c++  java
  • 39. Combination Sum

    description:

    给定target, 求给定数列中找到几个数(其中的数可以重复使用,且一组数有几个也不做限制)的和为target
    Note:

    Example:

    Example 1:
    
    Input: candidates = [2,3,6,7], target = 7,
    A solution set is:
    [
      [7],
      [2,2,3]
    ]
    
    Example 2:
    
    Input: candidates = [2,3,5], target = 8,
    A solution set is:
    [
      [2,2,2,2],
      [2,3,3],
      [3,5]
    ]
    
    

    answer:

    class Solution {
    public:
        vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
            vector<vector<int>> res;
            vector<int> out;
            combinationSumDFS(candidates, target, 0, out, res);
            return res; 
            // return combinationSumDFS(candidates, target, 0, out, res); 这是我之前的写法,注意错误!!!
        }
        void combinationSumDFS(vector<int>& candidates, int target, int start, vector<int>& out, vector<vector<int>>& res){
            if (target < 0) return;
            if (target == 0) {res.push_back(out); return;}
            for (int i = start; i < candidates.size(); ++i) {
                out.push_back(candidates[i]);
                combinationSumDFS(candidates, target - candidates[i], i, out, res);
                out.pop_back();
            }
        }
    };
    

    relative point get√:

    像这种结果要求返回所有符合要求解的题十有八九都是要利用到递归,而且解题的思路都大同小异,相类似的题目有 Path Sum II,Subsets II,Permutations,Permutations II,Combinations 等等,如果仔细研究这些题目发现都是一个套路,都是需要另写一个递归函数

    hint :

  • 相关阅读:
    牛客练习赛27 水图(思维+暴搜)
    差分
    矩阵化一维
    倍增法 求公共祖先
    vector 牛逼 +lower_bound+ upper_bound
    cmp和sort
    字符串的比较
    s 贪心
    太鼓达人 (有位运算的作用,但可能理解错了哈哈)
    kao shi di er ti(还没有订正)
  • 原文地址:https://www.cnblogs.com/forPrometheus-jun/p/11156917.html
Copyright © 2011-2022 走看看