博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 39. 组合总和
阅读量:3903 次
发布时间:2019-05-23

本文共 1017 字,大约阅读时间需要 3 分钟。

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

candidates 中的数字可以无限制重复被选取。

说明:

  • 所有数字(包括 target)都是正整数。
  • 解集不能包含重复的组合。 

示例 1:

输入: candidates = [2,3,6,7], target = 7,所求解集为:[  [7],  [2,2,3]]

示例 2:

输入: candidates = [2,3,5], target = 8,所求解集为:[  [2,2,2,2],  [2,3,3],  [3,5]]

 因为全是正数,所以,当dfs中的sum>target时,不必再进行dfs了,减去这种情况。

每一次往下dfs时,要在>=这个数的位置进行搜索。

C++:

 

class Solution {public:    vector
> combinationSum(vector
& candidates, int target) { int Size=candidates.size(); vector
>ve; vector
te; if(Size==0) return ve; dfs (0,target,candidates,ve,te,Size,0); return ve; } void dfs (int sum,int target,vector
& v1,vector
>& re,vector
& te,int Size,int loc) { if(sum==target) { re.push_back(te); return; } for (int i=loc;i
target) continue; te.push_back(v1[i]); dfs (sum+v1[i],target,v1,re,te,Size,i); te.pop_back(); } }};

 

转载地址:http://qvaen.baihongyu.com/

你可能感兴趣的文章
哈,又解决水晶报表的一个难题
查看>>
VC Ini文件处理
查看>>
一直误解sql事务的用法.
查看>>
转:利用C#实现分布式数据库查询
查看>>
转:Remoting系列(三)----对象的生命周期管理
查看>>
转:Remoting系列(二)----建立第一个入门程序
查看>>
转:Remoting系列(一)----Remoting的基本概念
查看>>
转:NET Remoting程序开发入门篇
查看>>
Net Remoting Singleton and Singlecall 区别
查看>>
2016年安大校赛(补题)
查看>>
BESTCODER ROUND92 1001.Skip the Class
查看>>
POJ 1661 Help Jimmy
查看>>
百练OJ 2755 神奇的口袋(递归+递推)
查看>>
HDU 1003 Max Sum
查看>>
Code Vs 1014 装箱
查看>>
循环队列,队链的实现
查看>>
HDU 2602 Bone Collector (01背包)
查看>>
POJ 1837 Blance (01背包)
查看>>
HDU 2456 饭卡 (01背包)
查看>>
HDU 1559 最大子矩阵
查看>>