dfs 伪代码
dfs(...) //含义:(!!)准备 对当面步 做决定
{
if(ok==1)
return;
if(该决定不符合条件) // 11
return;
if(到终点)
{
ok=1;
...
return;
}
...
do //有时 当前步只有一个决定
{
(1)对当前步 做第一个决定;
进行数据处理 !!
for(int i=1;i<=...;i++)
{
dfs(next); //直接进行下一个决定,下一个决定是否正确在11处判断,不在该处判断,否则可能如果输入只做一个决定就结束了,不会判断到第一步的错误
}
还原,以便做其他决定; !!! 注意不是dfs(next)的还原!!
(2)对当前步 做第二个决定;
进行数据处理
for(int i=1;i<=...;i++)
{
dfs(next);
}
还原,以便做其他决定;
}
}