通过率 55% · 提交 569 · 通过 312
小慕正在处理一个网络信号传播问题。信号在网格中传播时会逐层,且遇到无法直接穿透,但可以绕过阻隔物继续传播。现在需要计算某个位置的网络信号值。 - 给定一个 m 行 n 列的二维网格地图, - 网格中 array[i][j] = 0 表示该位置为空旷区域; - array[i][j] = x(x 为正整数)表示该位置是信号源,信号强度为 x; - array[i][j] = -1 表示该位置是阻隔物。 - 整个地图中只有 1 个信号源,阻隔物可能有 0 个或多个。 - 信号在传播时,每向上下左右相邻的网格移动一步,信号强度衰减 1。 - 小慕需要输出指定位置的最终信号值。
这类题属于华为 OD 机考真题方向中「200分 / BFS」方向的高频题型,通常考察对「200分 / BFS」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
输入为三行: 第一行为 m、n,代表输入是一个 m × n的数组。 第二行是一串 m × n 个用空格分隔的整数。每连续 n 个数代表一行,再往后 n 个代表下一行,以此类推。 对应的值代表对应的网格是空矿位置,还是信号源,还是阻隔物。 第三行是 i、j,代表需要计算 array[i][j] 的网络信号值。注意:此处i和j均从 0 开始,即第一行 i为 0 例如
6 5 0 0 0 -1 0 0 0 0 0 0 0 0 -1 4 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 4
代表如下地图

需要输出第 1 行第 4 列的网络信号值,如下图,值为 2

输出对应位置的网络信号值,如果网络信号未覆盖到,也输出 0。 一个网格如果可以途径不同的传播衰减路径传达,取较大的值作为其信号值。
时间限制 1000 ms · 内存限制 128 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
相关图解步骤
先看指定步骤补关键知识点,再回到本题完成标准输入输出。
注意,本题和 腐烂的橘子 几乎完全一致,属于计算 BFS 层数 的问题,而且只有一个信号源,所以使用常规的 单源 BFS 方法即可完成。
m * n 的一维数组,需要转换成我们常用的 grid 二维矩阵。(target_x, target_y) 的强度值 grid[target_x][target_y] 即可。intensity 不断 -1 来判断,无需从 level = 0 开始递增。思路展开
复杂度分析 设网格为 m 行 n 列。
总时间复杂度 O(m*n),瓶颈是对网格的整体扫描加一次 BFS。空间复杂度 O(m*n):grid 本身占 O(m*n),队列最坏时容纳一整层格子,也不超过 O(m*n)。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有