ylqi007 / LeetCode

21 stars 6 forks source link

算法设计技巧5: 回溯法 (Backtracking algorithm) #17

Open ylqi007 opened 11 months ago

ylqi007 commented 11 months ago

回溯算法(backtracking)也叫试探法,它是一种系统地搜索问题解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退,换一条路再试。回溯算法其实就是穷举法。不过回溯算法使用剪枝函数,剪去一些不可能到达的最终状态的节点,从而减少状态空间树节点的生成。

Backtracking属于DFS。

Reference:

Template:

result = []
func backtrack(选择列表,路径):
    if 满足结束条件:
        result.add(路径)
        return
    for 选择 in 选择列表:
        做选择
        backtrack(选择列表,路径)
        撤销选择
ylqi007 commented 11 months ago

Backtracking一般可以解决如下几种问题:

LeetCode中的题目: