一条路走到黑

8 分钟

深度优先搜索(DFS)的走法是:认准一条路一直往下走,直到走不动了,再退回最近的岔路口,换一条没走过的路继续,像走迷宫时扶着右墙一直摸。

它天然用递归实现,一层函数就是一步:

void dfs(int x, int y) {
    if (到达终点) { 记录答案; return; }
    for (int d = 0; d < 4; d++) {   // 试四个方向
        int nx = x + dx[d], ny = y + dy[d];
        if (能走(nx, ny)) {
            标记(nx, ny);
            dfs(nx, ny);            // 沿这条路继续深入
        }
    }
}

遍历一张图的复杂度是 (点数加边数)。DFS 的特点是"先深后广",适合求"所有方案"。

小纸条

这种走法像什么?

登录 后可看答案