DFS算法总结:
1、从图中某个顶点出发,访问v。
2、找出刚访问过的顶点的第一个未被访问的邻接点,访问该顶点。以该顶点为新顶点,重复此步骤,直到刚访问的顶点没有未被访问过的邻接点为止。
3、返回前一个访问过的且仍有未被访问过的邻接点的顶点,找出该顶点的下一个未被访问的邻接点,访问该顶点。
4,重复2、3,直到图中所有顶点都被访问过,搜索结束。
dfs结构框架:
void dfs()//参数的个数根据实际情况确定
{
if(到达终点状态)
{
//根据题意添加
return;
}
for(扩展方式)
{
if(扩展方式所达到状态合法)
{
修改操作;
标记;
dfs();
(还原标记);
//是否还原标记根据题意
}
}