数据结构与算法--回溯算法

148 阅读1分钟

回溯算法是什么?

回溯算法也是算法设计中的一种方法

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

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

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

算法步骤:

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

全排列,(力扣46)

输入:[1,2,3]

输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

解题思路:

  • 要求:所有排列情况,没有重复元素
  • 有出路,有死路
  • 考虑回溯算法解决

子集,(力扣78)

输入:[1,2,3] 输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]];

解题思路:

  • 要求:所有子集,没有重复元素
  • 有出路,有死路
  • 考虑使用回溯算法

解题步骤:

  • 用递归模拟所有的情况
  • 保证接的数字都是后面的数字
  • 收集所有到达递归终点的情况,并返回