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();
    		}
    	}
    };


  • 相关阅读:
    git add 添加错文件 撤销
    工作流Activiti5.13学习笔记(一)
    instanceof, isinstance,isAssignableFrom的区别
    oracle表查询速度极慢的处理过程记录一下
    类里面的成员变量如果是public,为什么破坏封装
    IPv4 IPv6验证
    枚举使用
    XML之命名空间的作用(xmlns)
    XSD-JAVA
    jaxb
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4316664.html
Copyright © 2011-2022 走看看