#6642. 迷宫出口(8 方向)
迷宫出口(8 方向)
迷宫出口(8 方向)
题目描述
一天,Extense 在森林里探险时误入了一个迷宫。迷宫由 (n \times n) 的格点组成,每个格点的值只有 0 或 1:
0表示该位置可以通行;1表示该位置不可通行。
Extense 可以朝周围 8 个方向 移动,包括:
左上 上 右上
左 当前 右
左下 下 右下
也就是说,他可以向 上、下、左、右、左上、右上、左下、右下 这 8 个方向移动。
现在他希望从点 A 走到点 B,请判断是否可行。
如果 A 或 B 不能通行,即对应格点的值为 1,则直接输出 NO。
如果能够从 A 走到 B,则输出 YES,否则输出 NO。
输入格式
第一行包含一个整数 (n),表示迷宫的大小为 (n \times n)。
接下来 (n) 行,每行 (n) 个整数,表示迷宫的 0/1 矩阵。
最后一行包含四个整数:
ha la hb lb
其中:
ha la表示起点 A 的行号和列号;hb lb表示终点 B 的行号和列号。
坐标从 1 开始,即 ((ha, la)) 和 ((hb, lb)) 都是 1-based 坐标。
输出格式
如果可以从 A 点走到 B 点,输出:
YES
否则输出:
NO
输入输出示例
输入示例 1
3
0 1 1
0 0 1
1 0 0
1 1 3 3
输出示例 1
YES
样例解释
迷宫如下:
A 1 1
0 0 1
1 0 B
因为允许 8 方向移动,所以可以从:
(1,1) → (2,2) → (3,3)
到达终点 B,因此输出:
YES
数据范围
1 ≤ n ≤ 100
ai ∈ {0, 1}
1 ≤ ha, la, hb, lb ≤ n
题目分析
这是一道迷宫连通性判断题。
由于每个格点可以向周围 8 个方向移动,因此可以使用 DFS 或 BFS 进行搜索。
搜索时需要判断:
- 当前格子是否越界;
- 当前格子是否为障碍物;
- 当前格子是否已经访问过;
- 是否已经到达终点。
若起点或终点为 1,说明不可通行,直接输出 NO。
否则,从起点开始进行搜索。只要能够搜索到终点,就输出 YES;如果搜索结束仍未到达终点,则输出 NO。
相关
在以下作业中: