我知道这个话题的标题可能会让人迷惑,但我不知道如何用一句话来解释它!我会尝试更清楚一点,我有一个 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 放在一起的部分,形状已分成两个较小的组!我试过检查最后一个被杀死的位的邻居,但我不能确定其他可能的形状连接。我也尝试过寻路算法,但是这个操作应该非常快,而且寻路太复杂了。我怎样才能做到这一点?