华为OD机考双机位C卷 - 自动泊车 (Java & Python& JS & C/C++ & GO )
自动泊车
2025华为OD机试双机位C卷 - 华为OD上机考试双机位C卷
华为OD机试双机位C卷真题目录点击查看: 【全网首发】2025华为OD机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)
题目描述
在某商场的地下停车场,部署了一套智能导航系统。停车场可以看作是一个 r*c 的网格矩阵,其中:
0表示该位置是空的行车道,车辆可以通行。1表示该位置存有障碍物、立柱或其他已停放的车辆,车辆无法通行。
停车场的入口统一设在坐标 [0, 0] 处。现在有一辆车进入停车场,需要前往指定的目标车位 [m, n]。车辆在停车场内只能沿着上、下、左、右四个方向移动,每移动一个格子计为步数 1。请你帮车主规划一条从入口到目标车位的最短路径。
输入描述
第一行输入两个整数 m 和 n,表示目标车位的行下标和列下标。
第二行输入两个整数 row 和 col,表示停车场的总行数和总列数。
接下来的 row 行,每行包含 col 个以空格分隔的整数(0 或 1),表示停车场的状态信息。
约束条件:
- 1 < row, col < 200
- 0 < m < row, 0 < n < col
- 入口 [0, 0] 保证为空位。
输出描述
输出一个整数,表示从入口 [0, 0] 到目标车位 [m, n] 的最短路径步数。如果由于障碍物阻挡无法到达目标位置,则输出 -1。
示例1
输入
1 1 3 3 0 0 0 0 0 0 0 0 0 输出
2 解题思路
解题思路
一、问题理解
这是一个 经典的迷宫最短路径问题 ,可以抽象为图论中的 无权图最短路径 问题:
| 要素 | 对应关系 |
|---|---|
| 节点 | 网格中的每个格子 |
| 边 | 相邻可通行格子之间的连接 |
| 起点 | 入口 (0, 0) |
| 终点 | 目标车位 (m, n) |
| 边权 | 均为1(每移动一格计1步) |
核心目标 :找到从起点到终点的最短路径长度,若无法到达则返回-1。
二、算法选择
为什么选择BFS(广度优先搜索)?
对于 无权图的最短路径问题 ,BFS是最优解法:
- BFS按层次遍历,第一次到达目标点时的路径一定是最短的
- 时间复杂度 O ( r o w × c o l ) O(ro