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

回溯算法06(总结+leetcode332,51,37)

参考资料:

https://programmercarl.com/%E5%9B%9E%E6%BA%AF%E6%80%BB%E7%BB%93.html

力扣这三题暂时不在本篇笔记中贴代码了,有兴趣的可参考332.重新安排形成、N皇后、解数独

总结:

树形图分析题目

用途:回溯算法是用 递归实现的多重for循环。(当有用多重for循环暴力求解的想法时,就考虑用回溯)

效率:本质是穷举,效率低,可剪枝提高效率

回溯三部曲

        1. 回溯函数参数。——一般nums[],(看情况使用startIndex,target)

        2. 终止条件。——控制for循环层数

        3. 单层遍历过程。——处理节点,backTracking(),回溯

去重:题目的数据中有重复元素,就考虑“树层去重”,使用若可排序则用used[]数组,否则用HashSet

剪枝:单层遍历的条件里面写剪枝条件

常考题型

        1.组合:有重复元素时先sort , 控制startIndex

        2.切割:思路同“组合”,注意细节(模拟切割线、截取子串...)

        3.子集:收集all节点,可不额外加终止条件(for循环判断条件中会终止)

        4.排列:不用startIndex,用used[]

        5.棋盘:...

void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {处理节点;backtracking(路径,选择列表); // 递归回溯,撤销处理结果}
}
//参考 代码随想录

http://www.lryc.cn/news/352660.html

相关文章:

  • LabVIEW图像识别的技术手段有什么?
  • Vulhub——adminer
  • MySQL之性能剖析(三)
  • spark 之数据湖
  • 记录Hbase出现HMaster一直初始化,日志打印hbase:meta,,1.1588230740 is NOT online问题的解决
  • Linux——进程信号(二)
  • 2024.5组队学习——MetaGPT(0.8.1)智能体理论与实战(下):多智能体开发
  • SQL开窗函数
  • [xx点评完结]——白马点评完整代码+rabbitmq实现异步下单+资料,免费
  • Hadoop+Spark大数据技术 实验8 Spark SQL结构化
  • 认知V2X的技术列一个学习大纲
  • 揭秘齿轮加工工艺的选用原则:精准打造高效传动的秘密武器
  • Linux-应用编程学习笔记(二、文件I/O、标准I/O)
  • AI爆文写作:根据别人的爆款标题,如何通过名词替换改成自己的爆款标题?
  • Mybatis源码剖析---第二讲
  • SpringMvc-restful设计风格
  • 在未来你将何去何从?
  • Vue.js组件设计模式:构建可复用组件库
  • 【C语言】指针运算
  • Python学习(3) 函数
  • 计算机网络安全控制技术
  • WordPress插件Disable WP REST API,可根据是否登录来禁用REST API
  • 腾讯云COS上传文件出现的问题
  • 【C++】<知识点> 标准和文件的输入输出
  • 在阿里Anolis OS 8.9龙蜥操作系统安装docker
  • 短剧APP开发,短剧行业发展下的财富密码
  • 简述分代垃圾回收器是怎么工作的?
  • Qt 自定义代理类
  • android GridLayout 布局详解,并举例
  • el-transfer和el-tree进行结合搞一个树形穿梭框