如果你知道1的位置,找到被1包围的零个数

时间:2018-03-30 12:45:15

标签: c++ algorithm

我正在进行一项编程挑战,其中我必须找到被其包围的零个数。

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

例如,如果我有

011110
010001
010001
001110
000000

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

但是在第三种情况n中,如果我在开头创建二维向量,它甚至不适合记忆。我还注意到n <= 10^6在所有集合中都相对较小({{1}})。

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

1 个答案:

答案 0 :(得分:0)

Counting Rooms While Knowing Where Walls Are在这里您可以找到计算被墙围绕的房间的结果(在您的情况下&#34; 1&#34;)您必须更改代码,它计算&的数量#34; 0&#34; S。但这个想法是一样的。通过bfs或dfs制作。