一条路走到黑
约 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 的特点是"先深后广",适合求"所有方案"。
小纸条
这种走法像什么?
登录 后可看答案