0

我知道这个话题的标题可能会让人迷惑,但我不知道如何用一句话来解释它!我会尝试更清楚一点,我有一个 2d 布尔值数组,每个值都说明该特定位置(或块)是否存在。

让我们举个例子:

1 1 1 1
1 1 1 1 1 1
1 1 1
1 1 1

该数组包含 16 个“活动”块,现在我可以“杀死”一些块,将它们的状态从 1 更改为 0。我想做的是知道在“杀死”之后,该组是否分成两个或多个单独的组,例如:

1 1 0 1
1 1 0 1
0 1 0 1
1 1 1 1

这个形状仍然是“完整的”,因为 0 的组没有切割任何 1 组,但在这种情况下:

1 1 0 1
1 1 0 1
0 0 0 1
1 1 1 1

现在我已经杀死了唯一将所有 1 放在一起的部分,形状已分成两个较小的组!我试过检查最后一个被杀死的位的邻居,但我不能确定其他可能的形状连接。我也尝试过寻路算法,但是这个操作应该非常快,而且寻路太复杂了。我怎样才能做到这一点?

4

1 回答 1

1

选择任何一个活块并进行洪水填充,然后检查它是否到达所有其他活块。

于 2013-01-22T14:44:36.790 回答