刷题方法:回溯法

Posted MISAYAONE

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷题方法:回溯法相关的知识,希望对你有一定的参考价值。

1:回溯法和动态规划的区别
共同点
用于求解多阶段决策问题。多阶段决策问题即:

求解一个问题分为很多步骤(阶段);
每一个步骤(阶段)可以有多种选择。


不同点
动态规划只需要求我们评估最优解是多少,最优解对应的具体解是什么并不要求。因此很适合应用于评估一个方案的效果;
回溯算法可以搜索得到所有的方案(当然包括最优解),但是本质上它是一种遍历算法,时间复杂度很高。

2:什么题适用?

1:在输入为1维数组的条件下,是否能够构建一个树结构,满足递归条件?

即:在已经选择了一些数的前提下,还需要选一些数,这显然是一个 递归 结构,不断的选择满足当前条件的下一个数;
2:递归的终止条件

两类变量比较重要: 一个排列中的数字已经选够了 ,因此我们需要一个变量来表示当前程序递归到树的第几层,我们把这个变量叫做 depth,或者命名为 index ,或者 begin
布尔数组 used[i],初始化的时候都为 false 表示这些数还没有被选择,当我们选定一个数的时候,就将这个数组的相应位置设置为 tr

以上是关于刷题方法:回溯法的主要内容,如果未能解决你的问题,请参考以下文章

leetcode刷题之回溯法

2021/6/19 刷题笔记串联字符串的最大长度与回溯法

leetcode刷题

leetcode之回溯刷题总结1

leetcode之回溯刷题总结3

面试常考算法题---回溯法(学习笔记)