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

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();}}
};

http://www.xdnf.cn/news/8687.html

相关文章:

  • Qt实战:自定义QTreeWidget搜索隐藏显示项功能 | 附完整源码
  • 基于音频Transformer与动作单元的多模态情绪识别算法设计与实现(在RAVDESS数据集上的应用)
  • 算法、算力、数据哪个更重要
  • C#核心概念解析:析构函数、readonly与this关键字
  • java 代码查重(五)比较余弦算法、Jaccard相似度、欧式距离、编辑距离等在计算相似度的差异
  • 开发者工具箱-鸿蒙大小写转换开发笔记
  • H3C-WAF-单机部署
  • 【每天一个知识点】“数字人”(Digital Human)
  • Easy Dataset数据集构建使用
  • 解析 Flask 上下文机制:请求上下文、应用上下文
  • AI Agent开发第74课-解构AI伪需求的魔幻现实主义
  • 【c++】成员函数被声明为 `const` 时
  • Oracle 的SHRINK 操作实现原理
  • 软考学习中
  • Docker Swarm配置
  • Linux系统基础——是什么、适用在哪里、如何选
  • 模拟电子技术基础----绪论
  • Python 训练营打卡 Day 34
  • 前端流行框架Vue3教程:24.动态组件
  • vue3使用七牛云上传文件
  • MATLAB例程——基于分批运输与最近邻优化的垃圾运输路径规划,n个垃圾收集点,每点有固定垃圾量,车辆从处理厂出发收集垃圾后返回,目标是最小化总行驶距离
  • 洛谷B2144 阿克曼(Ackermann)函数
  • 互联网和以太网之是什么与区别
  • 2025年安克创新Anker社招校招入职测评 | 3天备考、自适应能力cata测评北森题库、安克创造者启航试炼、安克AI能力测评能力测评历年真题
  • Python协同过滤算法:从原理到实战应用
  • 数据库6——综合实验-水果商店进阶一
  • C++题解(33)2025年顺德区中小学生程序设计展示活动(初中组C++)U560876 美丽数(一)和 U560878 美丽数(二)题解
  • 优启通添加自定义浏览器及EXLOAD使用技巧分享
  • 安全语音通信系统python
  • MSP430通用按键代码(KEY)设计与实现