跳到主要内容

回溯

场景

像是一种暴力解法。解决一个回溯问题,实际上就是一个决策树的遍历过程。

代码模版

一般你只需要思考 3 个问题:

  1. 路径:也就是已经做出的选择。
  2. 选择列表:也就是你当前可以做的选择。
  3. 结束条件:也就是到达决策树底层,无法再做选择的条件。
const result = []
function backtrack(路径, 选择列表) () {
if (满足结束条件) {
result.push(路径)
return
}

for (选择 of 选择列表) {
做选择
backtrack(路径, 选择列表)
撤销选择
}
}

参考