leetcode-Combination Sum-39
输入一个数组和target,选择任意个数的元素,求和为target的组合,每个元素可以选择多次
dfs,回溯,因为每个元素可以选择多次,所以向下搜索的时候从当前元素开始
同类题:http://blog.csdn.net/AC_0_summer/article/details/48293581
1 class Solution { 2 public: 3 void dfs(vector<vector<int> > &v,vector<int> vv,vector<int> a,int i,int target,int sum){ 4 if(sum>target) return; 5 if(sum==target){ 6 v.push_back(vv); 7 return; 8 } 9 // vv.push_back(a[i]); 10 for(int j=i;j<a.size();j++){ 11 if(sum+a[j]<=target){ 12 vv.push_back(a[j]); 13 dfs(v,vv,a,j,target,sum+a[j]); 14 vv.pop_back(); 15 } 16 } 17 } 18 vector<vector<int> > combinationSum(vector<int>& candidates, int target) { 19 vector<vector<int> > v; 20 vector<int> vv; 21 int sum=0; 22 sort(candidates.begin(),candidates.end()); 23 for(int i=0;i<candidates.size();i++){ 24 if(candidates[i]<=target){ 25 vv.push_back(candidates[i]); 26 dfs(v,vv,candidates,i,target,sum+candidates[i]); 27 vv.pop_back(); 28 } 29 } 30 if(v.size()==0) return v; 31 vector<vector<int> > ans; 32 ans.push_back(v[0]); 33 int k=0; 34 for(int i=1;i<v.size();i++){ 35 if(ans[k].size()!=v[i].size()){ 36 ans.push_back(v[i]); 37 k++; 38 continue; 39 } 40 int ok=0; 41 for(int j=0;j<ans[k].size();j++){ 42 if(v[i][j]!=ans[k][j]){ 43 ok=1;break; 44 } 45 } 46 if(ok){ 47 ans.push_back(v[i]); 48 k++; 49 } 50 } 51 return ans; 52 } 53 };
转载于:https://www.cnblogs.com/0summer/p/5821507.html
leetcode-Combination Sum-39相关推荐
- LeetCode Combination Sum IV(动态规划)
问题:给出一个数组nums和目标数target,问有多少组合形式 思路:用dp(i)表示目标数target的组合数.则有状态转移关系为dp(i)=sum(dp(i-nums[j])),其中i>= ...
- leetcode 39. Combination Sum | 39. 组合总和(Java)
题目 https://leetcode.com/problems/combination-sum/ 题解 不是最优解法. 对于每一个位置 i 上 的元素,分为选或不选两种情况. 遍历每一个位置,计算强 ...
- 回溯法和DFS leetcode Combination Sum
代码: 个人浅薄的认为DFS就是回溯法中的一种,一般想到用DFS我们脑中一般都有一颗解法树,然后去按照深度优先搜索去寻找解.而分支界限法则不算是回溯,无论其是采用队列形式的还是优先队列形式的分支界限法 ...
- LeetCode Combination Sum
因为实验室项目好久没刷题了.从今天开始重新开始刷题. Given a set of candidate numbers (C) and a target number (T), find all un ...
- 【DFS】LeetCode 39. Combination Sum
LeetCode 39. Combination Sum Solution1: DFS,这个套路要熟记啊! class Solution { public:vector<vector<in ...
- 【LeetCode】#39组合总和(Combination Sum)
[LeetCode]#39组合总和(Combination Sum) 加粗样式 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数 ...
- 【动态规划】LeetCode 377. Combination Sum IV
LeetCode 377. Combination Sum IV Solution1: 我的未能AC的答案 题目描述的和前几道题差不多,但实际上不能用DFS来做(会超时),要用动态规划,还是记录一下吧 ...
- 40. Combination Sum II 组合总和 II
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只能使用一次. ...
- 216. Combination Sum III
/** 216. Combination Sum III * 2016-6-12 by Mingyang* i一定要取到9,虽然大小聪明,想只取到7,但是后面的遍历可能也会遍历到9啊.* 1.长度标准 ...
- Combination Sum 和Combination Sum II
这两道题的基本思路和combination那一题是一致的,也是分治的方法. 其中combination Sum复杂一点,因为每个数可能用多次.仔细分析下,本质上也是一样的.原来是每个数仅两种可能.现在 ...
最新文章
- iOS Socket Client 通讯
- CentOS7 编译安装 gcc/c++ 9.1
- Ubuntu Apache 服务之 PHP 配置
- flutter 判断是不是调试模式_女人怎么判断男人是不是喜欢自己//男人真正喜欢女人的追求方式...
- gridview汇出EXCEL (ExportGridViewToExcel(dt, HttpContext.Current.Response);)
- Specified VM install not found: type Standard VM, name jdk1.7
- Mongodb java 例子
- 标准模板库(STL)之 map 列传 (三)
- linux 升级 git版本,CentOS下升级Git1.7.1升级到Git2.2.1
- 拓端tecdat|R语言使用贝叶斯层次模型进行空间数据分析
- solidworks——铝型材画法
- 第三阶段应用层——1.10 数码相册—main_page主界面的显存管理、页面规划、输入控制
- 无法找到 :import javax.annotation.Resource-------Resource 这个注解
- 使用CSS绘制一个平行四边形
- 10.高光反射Blinn
- 【清华集训2014】【BZOJ3812】主旋律
- 凯文·米特尼克的建议
- 集成电路(IC)摩尔定律
- 企业微信 php回调模式,老师,我的是微信企业号,开启回调模式一直不行,总提示 请求该url失败...
- 微信小程序 用wx.getRecorderManager()和wx.createInnerAudioContext()制作一个简单的录音播放器(录制以及播放)
热门文章
- 如何提高一个研发团队的“代码速度”?
- ImportError: cannot import name ‘options‘ from ‘pyecharts‘
- 测试开发岗面试问题-工具类
- Oracle EM 配置常用命令
- jQuery筛选器常用总结
- 简单拨号器(Android)
- WebService大讲堂之Axis2(9):编写Axis2模块(Module)
- 安装和使用Glassfish
- for循环 php 增加数组维数_PHP数组在循环中创建多维数组
- 上升沿_输入输出的上升沿和下降沿是怎么来的,一起看看