暴力递归 回溯
解决一个回溯问题,实际上就是一个决策树的遍历过程。你只需要思考 3 个问题:
1、 路径:也就是已经做出的选择。
2、选择列表:也就是你当前可以做的选择。
3、结束条件:也就是到达决策树底层,无法再做选择的条件。
代码方面,回溯算法的框架:
1 | result = [] |

函数其实就像一个指针,在这棵树上游走
1 | for 选择 in 选择列表: |
在递归之前做出选择,在递归之后撤销刚才的选择
有的时候,我们并不想得到所有合法的答案,只想要一个答案,怎么办呢? :
解:函数找到一个答案后就返回 true
1 | // 函数找到一个答案后就返回 true |
写backtrack
函数时,需要维护走过的「路径」和当前可以做的「选择列表」,当触发「结束条件」时,将「路径」记入结果集。