zoukankan      html  css  js  c++  java
  • leetcode39 组合总和

    这道题想到的就是dfs,在累加的和大于或等于target时到达递归树的终点。
    代码如下:

    class Solution {
    public:
        vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
            int r=candidates.size()-1;
            vector<vector<int>> res;
            for(int i=r;i>=0;i--){
                vector<int> tmp;
                int sum=0;
                dfs(candidates, tmp, res, target, i, sum);
            }
            
            return res;
        }
        void dfs(vector<int>& candidates, vector<int>& tmp, vector<vector<int>>& res, int target,int id,int& sum){
            sum+=candidates[id];
            tmp.push_back(candidates[id]);
            if(sum>=target){            
                if(sum==target) res.push_back(tmp);
                sum-=candidates[id];
                tmp.pop_back();
                return;
            }
            for(int i=id;i>=0;i--){
                dfs(candidates,tmp,res,target,i,sum);
            }
            tmp.pop_back();
            sum-=candidates[id];
        }
    };
    
  • 相关阅读:
    数据库范式
    服务器防火墙
    Java垃圾回收(GC)机制详解
    Java内存模型
    类加载器
    Java类加载机制
    java虚拟机:Java内存区域及对象
    初识HashMap
    初识LinkedList
    java ArrayList
  • 原文地址:https://www.cnblogs.com/joelwang/p/12060605.html
Copyright © 2011-2022 走看看