勇攀数字高峰
2026 华为OD机试真题 4月1日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
你在给定的数字地形图中寻找登山路径,数字代表当前位置的海拔高度,要求从最低海拔出发,不断攀登,最终到达最高山峰。你需要寻找所有满足条件的登山路径。 地图已经保证最低海拔和最高山峰都只有一个。
路径条件
- 登山规则:路径上的海拔必须严格递增
- 移动限制:可以向上下左右 44 个方向移动
- 路径限制:路径必须从最低海拔开始,到最高海拔结束
- 访问控制:每个地点只能走一次
- 高度差限制:每一步的攀登高度差必须大于 00,小于等于指定值
输入描述
输入一个二维数组表示的海拔图,维度为 n×m (2≤n,m≤10 ),
每个元素都是一个整数 xx 输入一个整数参数表示单步最大允许的高度差
输出描述
输出满足条件的登山路径的数量
示例1
输入
[[1,2],[3,5]],2
输出
1
说明
起点:最低点坐标 (0,0),海拔高度 1 终点:最高点坐标 (1,1) ,海拔高度 5 单步最大高度差:2 可行路径: 路径 1 :(0,0),(1,0),(1,1)
示例2
输入
[[4,3],[3,2]],1
输出
2
说明
起点:最低点坐标 (1,1),海拔高度 2 终点:最高点坐标 (0,0),海拔高度 4 单步最大高度差:1 可行路径: 路径 1:(1,1), (0,1), (0,0) 路径 2:(1,1), (1,0), (0,0)
示例3
输入
[[1,3],[3,4]],1
输出
0
说明
起点:最低点坐标 (0,0),海拔高度 1 终点:最高点坐标 (1,1),海拔高度 4 单步最大高度差:1 可行路径:0
解题思路
核心思想
这道题是一个典型的二维网格搜索问题,可以使用深度优先搜索 (DFS) 结合回溯来解决。
-
确定起点与终点:
- 题目保证最低海拔和最高海拔都只有一个。
- 遍历整个网格,找到最小值(起点)及其坐标,最大值(终点)及其坐标。
-
搜索过程 (DFS):
- 从起点出发,向四个方向(上下左右)尝试移动。
- 移动条件:
- 下一个位置的海拔必须比当前位置高(严格递增)。
- 下一个位置的海拔与当前位置的海拔差必须在允许的最大高度差 之内。
- 下一个位置必须在网格范围内。
- 每个位置只能走一次(访问控制)。
- 如果到达终点(最高山峰),则找到一条满足条件的路径,路径数量加 1。
-
回溯:
- 在进入下一步搜索前,标记当前位置为已访问。
- 搜索结束后,撤销标记(回溯),以便其他路径可以访问该位置。
复杂度分析
-
时间复杂度:。虽然理论上最坏情况是指数级的,但由于“严格递增”和“最大高度差”的限制,搜索树的分支会被极大地剪枝,因此在 的网格中运行效率很高。
-
空间复杂度:。主要消耗在递归栈和访问标记数组(或集合)上。