搜索算法
搜索是解决复杂问题的通用框架。共 16 个模板。
← 返回模板库6.1DFS - 全排列
深度优先搜索生成所有排列
6.2DFS - 组合枚举
从 n 个数中选 k 个的所有方案
6.3DFS - 子集枚举
枚举集合的所有子集
6.4N皇后问题
经典回溯,放置互不攻击的皇后
6.5BFS - 网格迷宫
层序遍历求网格最短路径
6.6BFS - 最少步数
状态空间搜索求最少操作次数
6.7泛洪填充(Flood Fill)
连通区域标记与填充
6.8剪枝技巧
可行性剪枝、最优性剪枝、对称性剪枝
6.9单调栈
维护栈中元素单调性,解决“下一个更大元素”类问题
6.10单调队列
维护队列单调性,高效求滑动窗口最值
6.11A* 搜索
启发式搜索,估价函数引导优先扩展
6.12IDA* 迭代加深
深度限制 + 启发函数,空间高效的搜索
6.13双向 BFS
从起点和终点同时搜索,大幅缩小搜索空间
6.14记忆化搜索
DFS + 缓存,避免重复子问题
6.15拓扑排序 - DFS
DFS 实现拓扑排序,判断有向图是否有环
6.16拓扑排序 - BFS(Kahn)
BFS 实现拓扑排序,入度为零的点依次入队