Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.

Example:

Input: n = 4, k = 2
Output:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]

回溯法。

细节。循环i=start;i++和递归的(i+1)的意义。

class Solution {
public:
vector<vector<int>> combine(int n, int k) {
vector<vector<int>> ret;
vector<int> out;
Helper(n,k,ret,out,1);
return ret;
} void Helper(int n, int k ,vector<vector<int>> &ret,vector<int>& out,int start)
{
if(out.size()==k)
{
ret.push_back(out);
return;
}
for(int i = start;i<=n;i++)
{ out.push_back(i);
Helper(n,k,ret,out,i+1); //开始下级,从i的后面开始。因为是组合不是排列,所以之前取过的数就不取了 out.pop_back();//一次回溯
}
}
};

法2. C(n, k) = C(n-1, k-1) + C(n-1, k),

把n个元素分成两组,第一组n-1个,第二组1个

从中取出k个元素【方法有 C(n,k)种】 ,取法有两种

(1)从第一组中取出k个方法有C(n-1,k)种

(2) 从第一组中取出k-1个,从第二组中取出1个方法有C(n-1,k-1)种

class Solution {
public:
vector<vector<int>> combine(int n, int k) {
if(n<k||k<0) return {};
if(k==0) return {{}}; //保存从n-1里面选k-1个的结果res.再在res中每个数组末尾加最后一个数(n)
vector<vector<int>> res=combine(n-1,k-1);
for(auto &a:res) a.push_back(n); //保存从n-1里面选k个的结果。将结果中的每个数组都push进res结果集里。
for(auto a:combine(n-1,k)) res.push_back(a);
return res;
} };

最新文章

  1. new bird in github
  2. git Could not read from remote repository 解决
  3. 使用Struts+Hibernate开发学生信息管理系统
  4. 洛谷P2751 [USACO4.2]工序安排Job Processing
  5. 解决flash挡住层的问题
  6. Oracle数据库之PL/SQL游标
  7. Swift Swift语言Storyboard教程:第二部
  8. nginx 配置访问限制
  9. Memcache第一篇---基础教程
  10. BCB F12切换界面 显示异常
  11. 1.3 PCI总线的存储器读写总线事务
  12. Spring Boot ConfigurationProperties validate
  13. 5. MYSQL问题:Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password:YES)
  14. JSP弹出对话框方式小结
  15. php ci 报错 Object not found! The requested URL was not found on this server. If you entered the URL manually please check
  16. 我只是个搬运工,walle
  17. Linux安装vsftpd总结
  18. Java.util包简单总结
  19. 上课总结-数据库Chapter2: 关系数据库
  20. 【千纸诗书】—— PHP/MySQL二手书网站后台开发之项目设计

热门文章

  1. 3n+1猜想
  2. swing线程机制
  3. shell 重定向 1&gt; 2&gt; &amp;&gt;
  4. 【转】Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
  5. 一个position为fixed的div,宽高自适应,怎样让它水平垂直都在窗口居中?
  6. webConfig中&lt;customErrors&gt;节点配置
  7. EntityFramework报错
  8. Spring Bean相互依赖问题
  9. SpingCloud微服务架构学习(一)之服务提供者与服务消费者
  10. 微信公众号自动回复_Java