华为OD机试真题 新系统 2026-07-08 PythonJS 实现【迷宫相遇】

目录

题目

思路

Code


题目

题目内容:

一个封闭迷宫有 n 个房间,编号为 0 到 n-1,相邻房间由双向门连接。

玩家 A 可以自由移动,玩家 B 沿给定路径来回巡逻。

请为玩家 A 选择最优移动策略,使 A 和 B 在最少回合后相遇。

注意:A 和 B 初始出发点不同。

规则:

每回合,A 可以移动到相邻房间,也可以停留在当前房间。

B 按给定路径循环移动:从起点开始,每回合移动到路径下一个位置;到达路径末端后折返,回到起点后再折返,如此循环往复。

B 在端点处不额外停留。例如单程路径 [0,1,2],B 的完整位置序列为 [0,1,2,1,0,1,2,1,...]。

A 和 B 在某回合结束后位于同一房间,视为相遇。

输入描述:

输入为一行字符串,格式为:

n,edges,startA,patrolPath

n 表示房间数量,1 < n < 100。

edges 表示房间连接关系,是 int 型二维数组,例如 [[0,1],[1,2],[2,3],[3,4]],表示双向连通;空数组 [] 表示没有连接。

startA 表示 A 的初始房间编号。

patrolPath 表示 B 的巡逻路径,即一次单程路径,例如 [0,1,2] 表示 B 从 0 出发,经过 1 到达 2,然后原路返回。patrolPath 至少包含一个元素,只有一个元素时表示 B 原地不动。

输出描