一、DFS模板
#include <iostream>
using namespace std;
bool check()
{
...
}
void dfs()
{
if (满足边界条件)
{
return;
}
for (int i = 0; i < 可扩展的路径数; i++)
{
if (check())
{
修改现场;
dfs(下一种情况);
还原现场;
}
}
}
二、BFS
void bfs()
{
queue<int> q;//一般用stl库中的queue来实现队列比较方便
q.push(起点S);//将初始状态入队
标记初始状态已入队。
while(!q.empty())//队列不为空就执行入队出队操作
{
top = q.front();//取出队首
q.pop();//队首出队
for (枚举所有可扩展的状态)
{
if (check())//状态合法
{
q.push(temp);//状态入队
标记成已入队。
}
}
}