DFS模板
void dfs(...)
{
// 结束递归的条件
if (...) {
..... // 把“当前结果” 加入 “结果集容器” 中
return;
}
// 继续递归,里面可能有回溯,也可能没有
if (...) {
... // 在容器中保存当前数据
dfs()
... // 在容器中删除上面保存的数据(注:这种情况下就称为回溯,很明显它是dfs的一个步骤)
}
}
BFS模板
queue<type> q;
q.push(初始状态);
while (!q.empty())
{
type t = q.front() ;
q.pop();
遍历 t 的各个Next状态 next
{
if (next is legal)
q.push(next); 计数或维护等;
}
}
本文提供了深度优先搜索(DFS)和广度优先搜索(BFS)的实现模板,这两种算法是解决图和树结构问题的基础。DFS采用递归方式深入探索每一个分支直到尽头,而BFS则按层次遍历所有节点。通过这两个模板可以更好地理解搜索算法的工作原理。
8765

被折叠的 条评论
为什么被折叠?



