如果您知道 1 的位置,请查找被 1 包围的零数

Find number of zeros surrounded by ones if you know positions of ones

本文关键字:查找 包围 位置 如果      更新时间:2023-10-16

我正在做一个编程挑战,在这个挑战中,我必须找到被一包围的零的数量。

我给出了:
行数和列数rc
一的位置数n
n位置i j其中i是行的索引,j是列的索引

例如,如果我有

011110 010001 010001 001110 000000

然后我返回6.
有 3 个测试输入集。在前两组中r, c <= 1000.我设法通过使用 DFS 来传递前两组,以找出没有被 1 包围的零数(从边界开始)。因此,零的数量z = r * c - k - n其中k是没有被 1 包围的零的数量。

但是在第三种情况下,如果我在开始时创建二维向量,r, c <= 10^18它甚至不适合内存。我还注意到n在所有集合中都相对较小(n <= 10^6)。

我的问题是如何为所有测试集解决这个问题?

在知道墙壁在哪里的同时计算房间 在这里,您可以找到计算被墙壁包围的房间的结果(在您的例子中为"1"),您必须更改代码,它计算"0"的数量。但想法是一样的。通过 bfs 或 dfs 制作。