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

[代码随想录21回溯]组合问题,电话号码的字母组合问题

前言

 回溯的提出是解决循环问题,回溯的提出就是为了解决排列和组合问题,以及多层遍历问题,因为如果遍历的层数越多我们的效率就会越低,回溯加上剪枝能很好解决这个问题。

题目链接

77. 组合 - 力扣(LeetCode)

216. 组合总和 III - 力扣(LeetCode)

17. 电话号码的字母组合 - 力扣(LeetCode)

一、组合

 思路:规定一个路径集合,和一个结果集合,用if去判断路径,用for循环去横向和纵向去加载路径。

剪枝优化的思路:去除掉无效的长度。

private:vector<vector<int>> res;vector<int>path;void backtrancing(int n,int k,int startIndex){if(path.size()==k){res.push_back(path);return;}for(int i=startIndex;i<=n;i++){path.push_back(i);backtrancing(n,k,i+1);path.pop_back();}}
public:vector<vector<int>> combine(int n, int k) {backtrancing(n,k,1);return res;}
private:vector<vector<int>> res;vector<int>path;void backtrancing(int n,int k,int startIndex){if(path.size()==k){res.push_back(path);return;}//剪枝优化一下for(int i=startIndex;i<=n-(k-path.size())+1;i++){path.push_back(i);backtrancing(n,k,i+1);path.pop_back();}}
public:vector<vector<int>> combine(int n, int k) {backtrancing(n,k,1);return res;}

 

二、组合总和

 思路:

三、电话号码的字母组合

思路:


http://www.mrgr.cn/news/80760.html

相关文章:

  • Spring MVC 中,处理异常的 6种方式
  • Linux 显示系统活动进程状态命令 ps 详细介绍
  • Flutter环境搭建
  • 实时日志与发展:Elasticsearch 推出全新专用的 logsdb 索引模式
  • 鸿蒙项目云捐助第十四讲云函数的初步使用
  • git中的命令
  • 制作一个简单的图片预览
  • python学opencv|读取图像(十六)修改HSV图像HSV值
  • 管理系统、微信小程序类源码文档-哔哩哔哩教程同步
  • 西游记战力排名、笔记等
  • pro文件转换为CMakeLists.txt文件,QT官方工具使用教程
  • 【云原生】Docker Compose 从入门到实战使用详解
  • 唯品会C++面试题及参考答案
  • FreeMarker语法
  • Restaurants WebAPI(二)——DTO/CQRS
  • 17.springcloud_openfeign之扩展组件一
  • 2024.12.19总结
  • SamOut 推理空间不变模型解析
  • [SZ901]程序固化工具速度对比
  • 【Maven】基础(一)
  • 排序算法深度好文(图解 + 代码解析 + 误区 QA )——学排序看这一篇就够了!!!
  • 洛谷P3879 [TJOI2010] 阅读理解(c嘎嘎)
  • 【CSS in Depth 2 精译_085】14.2:CSS 蒙版的用法
  • 无刷电机的概念
  • Linux:进程通信、管道通信
  • PYQT5程序框架