回溯算法思路


思路

  • 递归函数的返回值以及参数
  • 回溯函数终止条件
  • 单层搜索的过程
var combine = function (nums) {
  const res = []
  const path = []
  function bfs(start) {
    //终止条件
    if (终止条件) {
      res.push([...path])
      return
    }
    //单层的比遍历
    for (var i = start; i < nums.length; i++) {
      path.push(i) // 处理节点
      bfs(i + 1) // 递归处理
      path.pop() // 回溯,撤销处理的节点
    }
  }
  bfs(1)
  return res
}
void backtracking(参数) {
    if (终止条件) {
        存放结果;
        return;
    }

    for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
        处理节点;
        backtracking(路径,选择列表); // 递归
        回溯,撤销处理结果
    }
}

文章作者: 高红翔
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 高红翔 !
  目录