← 返回课程路线 第四阶段 · S4-04 · 65 分钟

画搜索树,学会选择、剪枝与回溯

这一课只练一件事:把每一步的选择画成 ,用 逐条走完。必会:判断安全的 条件、写完一条分支后正确 、写出停止搜索的边界。最小示例:从 3 个数 1、2、3 中选出若干个,使它们的和恰好等于 target = 4;每个数只能选或不选,1 <= n <= 20。样例追踪:选 1、跳过 2、选 3,和为 1 + 3 = 4,命中后记录方案并回溯,继续尝试其他组合。边界是 n=1(只判断这一个数是否等于 target),以及所有数都试完仍未凑出 target(无解,回溯到底)。建议掌握:统计一共找到几种方案。多维状态剪枝、双向搜索、记忆化是拓展。这里不会在浏览器里运行 C++。

必会:能画小规模搜索树;能写出剪枝条件;能解释一次回溯撤销了什么 建议掌握:能统计方案总数 拓展:多维状态剪枝、双向搜索、记忆化,现在不用当硬门槛

任务 1:先选出搜索该怎么想、剪枝怎么判断

是搜索题的骨架。 要先想清楚安全条件。点不认识的词可看基础解释。

必会:能说出搜索题要先画搜索树、再判断剪枝条件。这里不会在浏览器里运行 C++,只练习选择和走过程。

搜索题在本课要做什么?搜索思路 · 必会

剪枝要怎么处理?剪枝 · 必会