zoukankan      html  css  js  c++  java
  • leetcode

    Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.

    The same repeated number may be chosen from C unlimited number of times.

    Note:

    • All numbers (including target) will be positive integers.
    • Elements in a combination (a1a2, … , ak) must be in non-descending order. (ie, a1 ≤ a2 ≤ … ≤ ak).
    • The solution set must not contain duplicate combinations.

    For example, given candidate set 2,3,6,7 and target 7
    A solution set is: 
    [7] 
    [2, 2, 3] 

    class Solution 
    {
    public:
    	std::vector<std::vector<int> > combinationSum(std::vector<int> &candidates, int target)
    	{
    		std::sort(candidates.begin(), candidates.end());
    		dfs(candidates, 0,0, target);
    		return res;
    	}
    private:
    	std::vector<int> path;
    	std::vector<std::vector<int>> res;
    	// start 从candidates開始的位置, sum当前的和,target目标值,path存放满足条件的值,res 存放全部结果
    	void dfs(std::vector<int> &candidates, int start, int sum, int target)
    	{
    		if(sum>target)//超出目标值,直接返回
    			return ;
    		if(sum == target)// 满足条件
    		{
    			res.push_back(path);
    			return ;
    		}
    		for(int i=start; i< candidates.size(); i++)
    		{
    			path.push_back(candidates[i]);
    			dfs(candidates, i, sum+candidates[i], target);
    			path.pop_back();
    		}
    	}
    };


  • 相关阅读:
    线程安全问题
    Apache DBUtils框架 结果处理器
    编写JDBC框架:(策略设计模式)
    Java编写准备数据源
    理解事务的4种隔离级别
    JavaBeans与内省(Introspector)
    getRequestURI,getRequestURL的区别
    JDBC学习笔记——PreparedStatement的使用
    JDBC的编码步骤
    MySQL 完整性约束
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4316664.html
Copyright © 2011-2022 走看看