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


  • 相关阅读:
    Spring Boot 应用监控
    学习学习SpringSecurity
    Spring Cloud 简介
    thinkphp 请求
    八、主从复制
    七、AOF 持久化
    五、五大数据类型实现原理
    六、RDB 持久化
    四、redis的底层数据结构
    三、五大数据类型详细用法
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4316664.html
Copyright © 2011-2022 走看看