2026/1/10 10:27:41
网站建设
项目流程
石家庄网站建设服务,南充企业网站建设,深圳设计公司官网,短网址缩短第一周总结回溯问题抽象为树形结构#xff0c;可以直观的看出其搜索的过程#xff1a;for循环横向遍历#xff0c;递归纵向遍历#xff0c;回溯不断调整结果集。回溯算法三部曲#xff1a;参数。终止条件。单层递归逻辑。剪枝#xff1a;剪枝1#xff1a;for循环在寻找起…第一周总结回溯问题抽象为树形结构可以直观的看出其搜索的过程for循环横向遍历递归纵向遍历回溯不断调整结果集。回溯算法三部曲参数。终止条件。单层递归逻辑。剪枝剪枝1for循环在寻找起点的时候要有一个范围如果这个起点到集合终止之间的元素已经不够 题目要求的k个元素了就没有必要搜索了。剪枝2在求和问题中排序之后加剪枝是常见的套路比如组合中要求有四个元素从1-9中选择当遍历到6时就没必要继续递归了。因为往后不够四个元素。startIndex一般只有一个集合求组合问题时候使用startIndex并且能保证组合中的元素不重复。有多个集合从中求组合问题时不需要使用startIndx比如电话号码的字母组合。注意以上说的是求组合的情况如果是排列问题又是另一套分析的套路后面我在讲解排列的时候会重点介绍第二周总结“树枝去重”和“树层去重”。在candidates[i] candidates[i - 1]相同的情况下used[i - 1] true说明同一树枝candidates[i - 1]使用过used[i - 1] false说明同一树层candidates[i - 1]使用过切割问题分割回文串切割问题其实类似组合问题如何模拟那些切割线startIndex模拟切割线切割问题中递归如何终止在递归循环中如何截取子串子集问题在树形结构中子集问题是要收集所有节点的结果而组合问题是收集叶子节点的结果。