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); 计数或维护等;
}
}