算法设计方法之回溯算法

回溯算法

介绍

回溯算法是算法设计中的一种方法。回溯算法是一种渐进式寻找并构建问题解决方式的策略。回溯算法会先从一个可能的动作开始解决问题,如果不行,就回溯并选择另一个动作,直到将问题解决。

就像你在一个迷宫里面遇到了当前有三条岔路,你选择了第一条后发现此路不通,那你是不是要回到原点,进行选择第二条道路,以此类推,最后选择一条正确的道路。

什么问题适合用回溯算法解决?

  • 有很多分岔路
  • 这些路里面有死路,也有出路
  • 通常需要用递归来模拟所有的路

基础案例

场景一

全排列

// 输入
const input = [1, 2, 3]

// 输出
const output = [
    [1, 2, 3],
    [1, 3, 2],
    [2, 1, 3],
    [2, 3, 1],
    [3, 1, 2],
    [3, 2, 1]
]

步骤:

  1. 用递归模拟所有出路的情况
  2. 遇到包含重复元素的情况,就回溯
  3. 收集所有到达递归终点的情况并返回

原文链接:菜园前端

你可能感兴趣的:(算法,javascript,前端)