1.回溯算法题型归纳
(1)回溯算法一般代码框架如下
回溯算法需要考虑三个方面:
public void backtracking(参数) {
if (终止条件) {
存放结果;
return;
}
for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
处理节点;
backtracking(路径,选择列表);
回溯,撤销处理结果
}
}
(2)题型归类
根据回溯算法的应用,题型主要分为如下五大类:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b49f81b8f1a08821d1c3a4e23e2757b9.png)
核心思想:for循环横向遍历,递归纵向遍历,回溯不断调整结果集。
2.特殊题目(LeetCode对应题型)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0e38c4980fbad518d77dc2d2a0861630.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2ed49511f7eb6c00eb32b9aa7bc6187b.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/998eda5f4f18c35e96c9b20d1f7e1891.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fc467dacfe0f03e97113407faafe79a4.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3dccae9a4f7754f5c4e22416630cfed0.png)