一、回溯法
1.回溯法用来解决哪些问题,如下图:来源:代码随想录
2.对于回溯法和题目的理解,个人认为可以用树形结构来理解,这样就可以清晰很多,横向遍历使用for循环,纵向遍历使用递归
二、回溯法模板
1.回溯函数模板返回值以及参数
void backtracking(参数)
2.终止条件
if (终止条件) {
存放结果;
return;
}
3.回溯搜索的遍历过程
for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
处理节点;
backtracking(路径,选择列表); // 递归
回溯,撤销处理结果
}
三、总结
- 感觉回溯法最难理解的还是回溯那一部分,最后一定要记得pop出,有点绕