‹ 上一题 下一题 ›

g6-07093. 方向数组·三关顺序 未做

1000 ms 256 MB 测试点 ? 自拟题知识点题GESP-66级·深度优先搜索客观题单选

小酷抄网格 DFS 骨架时,不小心把「出界」和「墙」两行的先后顺序写反了:

void dfs(int x, int y) {
    if (room[x][y] == '#') return;                    // 墙,不走
    if (x < 0 || x >= n || y < 0 || y >= m) return;   // 出界,不走
    if (vis[x][y]) return;
    vis[x][y] = true;
    for (int d = 0; d < 4; d++) dfs(x + dx[d], y + dy[d]);
}

这版代码最可能出现的问题是( )。

  • A. 没问题,两关谁先谁后结果一样
  • B. 会把墙当成空地走进去
  • C. 当 dfs 被调到界外坐标(比如 (-1,0))时,第一行就访问 room[-1][0],数组越界,程序可能直接崩溃
  • D. vis 标记失效,程序会死循环
未选择
输入
输出

            
答案