AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P3503. 网格相邻消除

中等通过率 66% · 提交 1,167 · 通过 772
DFSBFS图论矩阵DFS/BFS

小慕正在处理一个 N 行 M 列的二维网格,网格中每个格子里的数字要么是 0,要么是 1。例如,他面对的网格可能是这样的: 1 1 0 0 0 0 0 1 0 0 1 1 1 1 1 1 小慕需要把所有 1 变成 0,规则如下: 1. 当他一个 1 时,这个 1 会变成 0,同时它上、下、左、右以及左上、左下、右上、右下这 8 个方向上相邻的 1(如果有)也会自动变成 0。 2. 进一步地,任何一个 1 被变成 0 时,它周围 8 个方向上的 1(如果有)也会自动变成 0。 按照这个规则,上面这个网格只需要点击 2 次,就能让所有数字都变成 0。 现在,小慕想知道,给定任意一个这样的网格,最少需要点击几次,才能让所有数字都变成 0?

提示:带虚线的词点一下有通俗解释。

输入描述

<p> 第一行输入两个整数,分别表示矩阵的行数 N 和列数 M,取值范围均为 [1,100] </p> <p> 接下来 N 行表示矩阵的初始值,每行均为 M 个数,取值范围 [0,1] </p>

输出描述

输出一个整数,表示最少需要点击的次数

示例

示例 1

输入

3 3
1 0 1
0 1 0
1 0 1

输出

1

说明:上述样例中,四个角上的 1 均在中间的 1 的相邻 8 个方向上,因此只需要点击一次即可。

示例 2

输入

4 4
1 1 0 0
0 0 0 1
0 0 1 1
1 1 1 1

输出

2

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
双机位A/C-开心消消乐 示例初始矩阵 (4x4):1100000100111111点击 (2,2) 和 (3,3) 后全变为0最少点击次数: 2注: 点击一个1会翻转其8邻域内的所有1
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「网格相邻消除」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。