8.23华为OD机试真题 新系统 – 抗洪救灾 (JavaPyCC++JsGo)

2026 华为OD机试真题8月23日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

题目描述

某地区发生特大洪水,水位高达 X,该地区被划分成了 m×n 个区块,各区块海拔高度不同。

被洪水淹没区域的群众已经自发转移到附近的高地,消防官兵需要快速获取未被淹没的高地数量,并派出救援队将群众转移。请你快速帮助消防官兵统计出未被淹没的高地数量,方便消防官兵组织救援。

未淹没的连续区块被识别为同一区域,连续方式包含水平、垂直、斜线方向(8 连通)。

2026 华为OD机试真题8月23日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

输入描述

参数 1:整数 X,表示洪水高度(0≤X≤10)。

参数 2:整数 m,表示区块的行数(3≤m,n≤100)。

参数 3:整数 n,表示区块的列数(3≤m,n≤100)。

参数 4:二维数组(m×n),表示每个区块的海拔高度。

输入为一行,四个参数用英文逗号分隔,例如:

5,3,3,[[0,0,0],[0,9,0],[0,0,0]]

输出描述

一个整数,表示未被淹没的高地区域数量。

示例1

输入

5,3,3,[[0,0,0],[0,9,0],[0,0,0]]

输出

1

说明

只有一个区块高度(9),大于洪水高度(5),因此返回 1

示例2

输入

3,5,5,[[2,2,2,2,2],[2,9,9,9,2],[2,9,9,9,2],[2,9,9,9,2],[2,2,2,2,2]]

输出

1

说明

如下矩阵,只有一个中间连续区块高度(9)大于洪水高度 5,因此返回 1

解题思路

核心思想

题目要统计所有海拔高度严格大于洪水高度 X 的连通块数量,连通方式是 8 连通。

因此可以遍历整个网格,遇到一个未访问且高度大于 X 的格子,就从它出发做一次 DFS/BFS,把与它 8 连通的所有高地都标记掉,连通块数量加 1。

算法步骤

  1. 读取洪水高度 X、行数 m、列数 n 和海拔矩阵 areas
  2. 建立 vis 数组,记录每个格子是否已经访问过。
  3. 枚举每个格子:
    • 若当前格子高度 <= X 或已访问,则跳过;
    • 否则说明发现一个新的高地区域,答案加 1;
    • 使用栈或队列把该区域所有 8 连通格子都标记访问。
  4. 最终输出连通块数量。

复杂度分析

设网格大小为 m×n

  • 时间复杂度:O(mn)
  • 空间复杂度:`O(
THE END