Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.

Ensure that numbers within the set are sorted in ascending order.

就是去k个数的和加起来等于n的组合的个数,数字只能取1-9,做法比较简单就是DFS吗,这里不再赘述,我比较喜欢用private变量,这样函数的参数式写出来比较简单:

 class Solution {
public:
vector<vector<int>> combinationSum3(int k, int n){
size = k;
target = n;
vector<int> tmpVec;
tmpVec.clear();
ret.clear();
dfs(tmpVec, target, );
return ret;
}
void dfs(vector<int>& vec, int left, int start)
{
if(left < ) return;
if(left == && vec.size() == size){
ret.push_back(vec);
return;
}
for(int i = start; i <= ; ++i){
vec.push_back(i);
dfs(vec, left - i, i + );
vec.pop_back();
}
}
private:
vector<vector<int>> ret;
int target;
int size;
};

java版本的如下所示,方法仍然相同,简单的DFS:

 public class Solution {
public List<List<Integer>> combinationSum3(int k, int n) {
List<List<Integer>> ret = new ArrayList<List<Integer>>();
List<Integer> tmp = new ArrayList<Integer>();
dfs(ret, tmp, 0, k, 1, n);
return ret;
} public void dfs(List<List<Integer>>ret, List<Integer>tmp, int dep, int maxDep, int start, int left){
if(left < 0)
return; //回溯
else if(left == 0){
if(dep == maxDep)
ret.add(new ArrayList<Integer>(tmp));
return;
}else{
for(int i = start; i <= 9; ++i){
tmp.add(i);
dfs(ret, tmp, dep+1, maxDep, i+1, left - i);
tmp.remove(new Integer(i));
}
}
}
}

最新文章

  1. JS高程3.基本概念(2)
  2. Linux安装软件时缺少依赖包的简单较完美解决方法!
  3. python 输入和输出
  4. OC之160728
  5. ssh整合(http://blog.csdn.net/songanling/article/details/22454973)
  6. session失效后跳转到登陆页面
  7. Scala之Map,Tuple
  8. python多态
  9. Delphi XE5教程10:Delphi字符集
  10. [转]IIS7.5 添加expires头 提高性能
  11. HTML5 新增通用属性
  12. JS杂记
  13. Docker下搭建Jenkins构建环境
  14. windows系统命令行
  15. Java并发编程实战 之 对象的共享
  16. 001- CreateProcess failed with error 216 (no message available)错误详解
  17. socket.io不为人知的功能
  18. [转]xargs详解
  19. Win7 无法访问Installer服务
  20. &amp;lt;十一&amp;gt;读&amp;lt;&amp;lt;大话设计模式&amp;gt;&amp;gt;之抽象工厂模式

热门文章

  1. boost之数学与数字
  2. (扫盲)DTO数据传输对象
  3. Linux服务器操作指南
  4. $GitHub边用边总结
  5. 【HackerRank】Missing Numbers
  6. 【Head First Servlets and JSP】笔记6:什么是响应首部 &amp; 快速搭建一个简单的测试环境
  7. 【Flask】Sqlalchemy 外键
  8. 原生javasxript获取浏览器的滚动距离和可视窗口的高度
  9. R语言的输出函数cat,sink,writeLines,write.table
  10. Oracle常用知识小总结