搜索 专题

DFS 模板

模板

int DFS(int t)
{
    if(满足输出条件)
    {
        输出解;
        return;
    }
    else
    {
        for(int i = 1;i <= 尝试方法数; ++i)
            if(满足进一步搜索条件)
            {
                为进一步搜索所需要的状态打上标记;
                DFS(t+1);
                恢复到打标记前的状态;  //回溯
            }
    }
}

注意点

1.第一个 if 是符合输出解的条件,第二个 if 是符合进一步搜索的条件;

2.下一步搜索时,不是使用 return DFS(t+1),而是直接 DFS(t+1);

3.for 循环之后的 if 可以是多个;

4.for 循环边界,例如:

  • 方向是四个,那么边界肯定就是 4;

  • 素数环需要尝试 1 至 20,那么边界就是 20;