当前位置: 首页 > news >正文

77. Combinations

77. Combinations

题目描述

回溯法

版本一

class Solution {vector<vector<int>> res;vector<int> com;
public:vector<vector<int>> combine(int n, int k) {for(int i = 1;i <=n;i++){com.push_back(i);backtracing(i+1,n,k);com.pop_back();}return res;}void backtracing(int start,int end,int k){if(com.size() == k){res.push_back(com);return;}for(int i = start;i <= end;i++){com.push_back(i);backtracing(i+1,end,k);com.pop_back();}}
};

 版本二,最开始的循环是不必要的。

class Solution {vector<vector<int>> res;vector<int> com;
public:vector<vector<int>> combine(int n, int k) {backtracing(1,n,k);return res;}void backtracing(int start,int end,int k){if(com.size() == k){res.push_back(com);return;}for(int i = start;i <= end;i++){com.push_back(i);backtracing(i+1,end,k);com.pop_back();}}
};

剪枝优化一:

class Solution {vector<vector<int>> res;vector<int> com;
public:vector<vector<int>> combine(int n, int k) {backtracing(1,n,k);return res;}void backtracing(int start,int end,int k){if(com.size() == k){res.push_back(com);return;}for(int i = start;i <= end;i++){if(end - i + 1 + com.size() < k)continue;com.push_back(i);backtracing(i+1,end,k);com.pop_back();}}
};

剪枝优化二:

class Solution {vector<vector<int>> res;vector<int> com;
public:vector<vector<int>> combine(int n, int k) {backtracing(1,n,k);return res;}void backtracing(int start,int end,int k){if(com.size() == k){res.push_back(com);return;}for(int i = start;i <= (end - (k-com.size()) + 1);i++){com.push_back(i);backtracing(i+1,end,k);com.pop_back();}}
};

相关文章:

  • 构建Harbor私有镜像库(详细版)
  • 医学影像科研概述与研究伦理
  • 大厂缓存架构方案-Caffeine+Redis双层缓存架构
  • 如何选用正确的html元素
  • Spark集群架构解析:核心组件与Standalone、YARN模式深度对比(AM,Container,Driver,Executor)
  • Vue-创建应用/挂载应用/根组件模版-.vue单文件/应用配置
  • 上升沿计数 stm32 中断
  • 【R语言科研绘图】
  • python操作mysql数据库
  • R基于逻辑回归模型实现心脏病检测及SHAP值解释项目实战
  • Starrocks 怎么计算各个算子的统计信息
  • R语言科研编程-柱状图
  • DeepSeek 赋能医疗影像分析:从卷积神经网络到临床诊断效率革新
  • Spark 中,map和foreach的区别
  • 基于Spring boot+vue的中医养生系统的设计与实现(源码+论文+部署+安装+调试+售后)
  • STM32之看门狗(IWDG)
  • [CSS3]Flex布局
  • John the Ripper 入门指南:密码破解工具的正确打开方式
  • Cmake编译gflags过程记录和在QT中测试
  • Qt实战:自定义QTreeWidget搜索隐藏显示项功能 | 附完整源码
  • 做网站用百度百科的资料会侵权吗/苏州整站优化
  • 长春做网站qianceyun/网络营销费用预算
  • 哪些网站教你做美食的/网络营销方式有几种
  • 做外文翻译的网站/百度推广可以自己开户吗
  • 重庆建设行业网站/宁波seo优化公司
  • 做代购在哪个网站好/软件开发培训班