回溯

官官方信息技术老师·7 页·深入(追求细节与边界)·0 次浏览·33 天前
信息技术大学

回溯

数据结构与算法·面试高频 · 第 4 章 算法思想

按 空格/→ 演示下一步

问一句
1 / 7 页

全部页面点击任意一页,跳回舞台从这页播放

信息技术大学

回溯

数据结构与算法·面试高频 · 第 4 章 算法思想

1第 1 页 · 回溯

回溯框架与剪枝

回溯 = 决策树遍历:做选择、递归、撤销选择;剪枝砍掉无效子树是灵魂。

框架
路径加选择列表:选、递归、撤销三步
剪枝
可行性剪枝与同层去重,越早砍越省
复杂度
候选解指数级,剪枝质量决定生死
2第 2 页 · 回溯框架与剪枝

N 皇后

逐行放皇后:列与两条对角线的占用集合,一个集合一次判断,回溯不慌。

行间不冲突
每行只放一个,行冲突天然不存在
对角标记
row−col 与 row+col 各一个集合判斜线
对称剪枝
首行只试半边,答案数翻倍即可
3第 3 页 · N 皇后

括号生成

左右括号计数:左没超 n 可加,右少于左可加,规则天然保证合法。

两条规则
左括号数 < n 可放左;右 < 左可放右
合法性
规则本身保证任意前缀合法,无须事后验证
4第 4 页 · 括号生成

单词搜索

网格找词:每格向四邻走,走过的格子临时改字符当 visited,回溯还原。

起点枚举
从每个匹配首字母的格子出发尝试
原地标记
改字符防回头,返回前改回原字符
剪枝
字符不匹配立刻返回,长度不足提前剪
5第 5 页 · 单词搜索

本节要点

  • ✓回溯三步:选、递归、撤销
  • ✓N 皇后:三个集合挡列与斜线
  • ✓括号生成:计数规则保合法
  • ✓单词搜索:原地标记来回还原
延伸主题:手写 N 皇后计数刷电话号码字母组合
6第 6 页 · 本节要点

课后思考

先自己回答,再展开参考答案——能讲出来才算真懂。

1回溯与 DFS 是什么关系?

参考答案DFS 是图的遍历骨架;回溯是在决策树上的 DFS,多了「撤销选择」——状态要恢复到进子树之前,其他分支才能干净地重走。本质是带状态恢复的 DFS。

2同层去重为什么必须先排序?

参考答案去重靠「同层跳过与前一个相同的值」;不排序时相同值不相邻,比较无从谈起。排序让等值元素聚在一起,一条判断就挡住整批重复分支。

3剪枝的收益为什么远超「解出来再过滤」?

参考答案指数树的成本随深度爆炸:浅层砍掉一个非法分支等于删除整棵子树;事后过滤只省最后的收集,剪枝省的是整段搜索。越早砍越值钱。

7第 7 页 · 课后思考