解决一个DFS算法问题,实际上就是一个决策树的遍历过程。你只需要思考如下3个问题:
路径:也就是已经做出的选择。
选择列表:也就是你当前可以做的选择。
结束条件:也就是到达决策树底层,无法在做选择的条件。
如果你不理解这3个名词的解释,没关系,后面会用“全排列”相关题目经典问题来帮助你理解这些词语的含义,现在现有一个印象即可。
result= []
def backtrack(路径,选择列表):
if(满足结束条件):
result.add(路径)
return;
for 选择 in 选择列表:
做选择
backtrack(路径,选择列表)
撤销选择
1
2
3
4
5
6
7
8
9
10
其核心就是for循环里面的递归,在递归调用之前“做选择”,在递归调用之后“撤销选择”。
什么叫撤销选择?这个框架的底层原理是什么呢?下面我们就通过全排列问题解开之前的疑惑,一探究竟吧!!!
————————————————
版权声明:本文为CSDN博主「认真写博客的夏目浅石.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及