)
直捣黄龙2026 华为OD机试真题 4月8日华为OD上机新系统考试真题 200 分题型点击查看华为 OD 机试真题完整目录2026最新华为OD机试新系统卷 双机位C卷 真题题库目录全覆盖题库 逐点算法考点详解题目描述小王在玩一款叫做直捣黄龙的小游戏在该游戏中他需要从入口位置进入敌营绕过哨兵的层层封锁达到敌军司令部实施斩首行动。敌军阵营是一个 $n*n$ 的矩阵入口在坐标 $(0,n/2)$敌军司令部在坐标 $(n-1,n/2)$每个哨兵警戒以自己为中心的9宫格一旦被哨兵发现则行动失败。同时穿越敌营耗时越长被发现的概率越高因此小王需要寻找到可以绕过警戒到达敌军司令部的最短路径。请你设计一个小程序帮助小王统计这样的路径有多少条以及路径长度。规则说明:1.其中 $n$ 为大于 $1$ 的奇数且取值小于 $30$ 坐标 $xy$ 取值均从 $0$ 开始敌营左下角定义为 $(0,0)$,右上角定义为 $(n-1,n-1)$.2.敌营入口在坐标 $(0,n/2)$敌军司令部在坐标 $(n-1n/2)$。3.游戏角色的行动方向只包含上、下、左、右四个方向即一次行动 $x、y$ 坐标不可同时变化。4.在没有满足题目要求的可达路径时需要返回{$0,0$}。2026 华为OD机试真题 4月8日华为OD上机新系统考试真题 200 分题型输入描述参数 $1$敌军阵营的边长 $n$ 。参数 $2$哨兵位置列表 $Point${$xyx$表示行坐标$y$ 表示列坐标。输出描述两个成员的数组第一个成员为最短路径条数第二个成员为最短路径长度示例1输入3,[(1,1)]输出[0,0]说明无路径场景S表示哨兵位置A表示起点E表示终点哨兵警戒了全图/无可达路径因此返回为{00}示例2输入5,[(2,1)]输出[1,7]说明单一最短路径场景S表示哨兵位置A表示起点E表示终点最短路径:[(0,2),(0,3),(1,3),(2,3),(3,3),(4,3),(4,2)][(0,2),(0,3),(1,3),(2,3),(3,3),(4,3),(4,2)]因此返回值为{17}示例3输入5,[(2,2)]输出[2,9]说明两条最短路径S表示哨兵位置A表示起点E* 表示终点路径1:[(0,2),(0,1),(0,0),(1,0),(2,0),(3,0),(4,0),(4,1),(4,2)][(0,2),(0,1),(0,0),(1,0),(2,0),(3,0),(4,0),(4,1),(4,2)]路径2:[(0,2),(0,3),(0,4),(1,4),(2,4),(3,4),(4,4),(4,3),(4,2)][(0,2),(0,3),(0,4),(1,4),(2,4),(3,4),(4,4),(4,3),(4,2)]因此返回值为{2,9}解题思路核心思想题目要求在 $n \times n$ 的网格中寻找从入口 $(0, n/2)$ 到司令部 $(n-1, n/2)$ 的最短路径条数及长度。关键点如下 1.哨兵警戒区每个哨兵位于 $(x, y)$其警戒范围是以其为中心的 $9$ 宫格。这意味着坐标在 $[x-1, x1]$ 和 $[y-1, y1]$ 范围内的所有点都是不可通行的障碍物。 2.网格坐标入口在 $(0, n/2)$司令部在 $(n-1, n/2)$。坐标系规定左下角为 $(0,0)$右上角为 $(n-1, n-1)$。 3.路径长度定义根据示例分析路径长度指的是路径上点的个数即 步数 1。 4.算法选择 *BFS (广度优先搜索)是寻找无权图或等权图最短路径的最佳选择。 * 在 BFS 过程中我们需要同时维护两个信息 *dist[x][y]从起点到点 $(x, y)$ 的最短距离。 *count[x][y]从起点到点 $(x, y)$ 的最短路径条数。 5.BFS 逻辑 * 初始化dist为无穷大count为 0。 * 起点dist[start] 1按点数算count[start] 1。 * 对于当前点 $(x, y)$ 的邻居 $(nx, ny)$ * 如果dist[nx][ny] dist[x][y] 1说明找到了更短的路径更新dist[nx][ny] dist[x][y] 1并令count[nx][ny] count[x][y]。 * 如果dist[nx][ny] dist[x][y] 1说明找到了另一条相同长度的最短路径累加计数count[nx][ny] count[x][y]。复杂度分析时间复杂度$O(n^2)$。我们需要预处理所有哨兵的警戒范围并进行一次 BFS 遍历。由于 $n 30$网格大小最多为 $900$ 个点。空间复杂度$O(n^2)$。用于存储网格的障碍物信息、距离数组和路径计数