知识点
回溯算法
回溯算法解题思路:
回溯算法的解决,其实就是一个决策树的遍历过程。
只要明确3个问题即可:1、路径:即已经做出的选择;2、选择列表:当前可以进行的选择;3、结束条件:到达决策的底层,无法做出选择。
在代码层面,就是一个for循环,遍历选择列表;for循环循环体中,使用递归调用,递归前做选择,递归后撤销选择。
DFS(深度优先遍历)
DFS解题思路
DFS其实就是回溯算法,直接使用回溯算法的解题技巧即可
LeetCode算法题
求子集,求排列,求组合问题
解题思路:
上述三种问题,都可以使用回溯算法(即DFS)解决
解数独问题
解题思路:
仍然是使用回溯算法解决
LeetCode算法
- 37.【解数独】
括号问题
括号问题的种类
括号问题一般分为两种类型:1、判断括号的合法性;2、合法括号的生成
LeetCode算法题
22.[括号生成]
解题思路:
组合问题都可以使用回溯算法来解决,其中的难点就是如何判断该组合的括号合法性。
括号的合法性包含两个:1、一个合法括号组合的左括号数量一定等于右括号数量;2、一个合法括号组合P,必然对0<=i<=length(P)来说,子串P[0..i]中,左括号数量大于等于右括号