LeetCode 77.Combinations
2016-06-12 15:57
148 查看
/* LeetCode 077Combinations 递归/回溯 题目大意:给两个数n和k,找出1-n这n个数的个数为k的子序列 解题思路:递归/回溯 参考:http://blog.csdn.net/charles1e/article/details/51646879 */ #include <iostream> #include <vector> using std::vector; using std::cout; using std::endl; using std::cin; class Solution { public: vector<vector<int>> combine(int n, int k) { vector<vector<int> > result; vector<int> path; DFS(n, k, 1, 0, path, result); return result; } private: //长度为n,要找到长度为k的子序列,起始位置为start,当前个数为cur //path记录的是一个子序列,result记录的是整个结果 void DFS(int n, int k, int start, int cur, vector<int>& path, vector<vector<int> > &result) { if (cur == k) {//递归出口:path中已经有了k个数 result.push_back(path); return; } for (int i = start; i <= n; ++i) { path.push_back(i); DFS(n, k, i + 1, cur + 1, path, result); //递归:添加下一个元素 path.pop_back(); //回溯,弹出当前元素后继续查找 } } }; int main() { Solution sol; int n, m; cin >> n >> m; vector<vector<int> > result; result = sol.combine(n, m); for (auto v : result) { for (auto i : v) { cout << i << " "; } cout << endl; } return 0; } /* 输入: 4 2 输出: 4 2 1 2 1 3 1 4 2 3 2 4 3 4 */
相关文章推荐
- hdu4628(状态压缩dp)
- MFC中设置静态文本的字体颜色、背景透明以及解决字体重叠
- 5-1 厘米换算英尺英寸 (15分)
- 一次面试题总结
- php 如何转义emoji表情,让它可以存入utf8的数据库
- 婚姻关系的建模分析
- oVirt管理手册(一) 概述
- maxos CrashReporter结构
- Java集合类
- 大话设计模式-第10章 考题抄错会做也白搭--模板方法模式
- sql server 2008r2:The target principal name is incorrect. Cannot generate SSPI context
- 常用STL用法总结
- Windws Server 2008 R2 WEB环境配置之安装IIS方法
- html中的垂直居中实现
- ubuntu12.04解决gedit中文显示乱码问题
- JS代码实现网站设为首页加入收藏功能
- python 中密码处理函数
- android 使用Scroller实现美团悬浮框,网易左右滑动菜单效果
- 全备脚本
- 理解矩阵(二)