博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]77.Combinations
阅读量:5743 次
发布时间:2019-06-18

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

题目

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

For example,

If n = 4 and k = 2, a solution is:

[

[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]

思路

典型的递归回溯法。

(1)递归一次,填入一个数字
(2) 填入的数字,不能是小于当前数字的值,防止重复
(3 )回溯:记得pop_back()最后加上的一个数字,回溯到上一层。
(4) 结束条件:填写够了k个数字的时候,当前填写完毕,回溯

代码

/**------------------------------------    *   日期:2015-02-06    *   作者:SJF0115    *   题目: 77.Combinations    *   网址:https://oj.leetcode.com/problems/combinations/    *   结果:AC    *   来源:LeetCode    *   博客:    ---------------------------------------**/    #include 
#include
#include
using namespace std; class Solution { public: vector
> combine(int n, int k) { vector
> result; vector
path; DFS(n,k,result,path,1); return result; } private: void DFS(int n,int k,vector
> &result,vector
&path,int index){ if(path.size() == k){ result.push_back(path); return; }//if for(int i = index;i <= n;++i){ path.push_back(i); DFS(n,k,result,path,i+1); path.pop_back(); }//for } }; int main(){ Solution s; int n = 5; int k = 2; vector
> result = s.combine(n,k); // 输出 for(int i = 0;i < result.size();++i){ for(int j = 0;j < k;++j){ cout<
<<" "; }//for cout<

运行时间

这里写图片描述

你可能感兴趣的文章
程序是如何执行的(一)a=a+1
查看>>
18 已知下面的字符串是通过RANDOM随机数变量md5sum|cut-c 1-8截取后的结果
查看>>
BZOJ - 3578: GTY的人类基因组计划2
查看>>
爱——无题
查看>>
分布式服务框架原来与实践 读书笔记一
查看>>
【http】post和get请求的区别
查看>>
TFS强制撤销某个工作区的文件签出记录
查看>>
EL表达式无法显示Model中的数据
查看>>
ps6-工具的基础使用
查看>>
灵活运用 SQL SERVER FOR XML PATH
查看>>
linux下使用过的命令总结(未整理完)
查看>>
时间助理 时之助
查看>>
英国征召前黑客组建“网络兵团”
查看>>
Silverlight 2.5D RPG游戏“.NET技术”技巧与特效处理:(十二)魔法系统
查看>>
PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)...
查看>>
pyjamas build AJAX apps in Python (like Google did for Java)
查看>>
LAMP环境搭建1-mysql5.5
查看>>
centos5.9使用RPM包搭建lamp平台
查看>>
Javascript String类的属性及方法
查看>>
[LeetCode] Merge Intervals
查看>>