0

このトピックのタイトルがわかりにくいかもしれませんが、一言で説明する方法がわかりませんでした。より明確にしようとします。ブール値の 2 次元配列があり、すべての値はその特定の位置 (またはブロック) が生きているかどうかを示します。

例を挙げてみましょう:

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 をまとめていた唯一のビットを殺しました。形状は 2 つの小さなグループに分割されました! 最後に殺されたビットの隣人をチェックしようとしましたが、形状の他の可能な接続について確信が持てません。経路探索アルゴリズムも試しましたが、この操作は非常に高速である必要があり、経路探索は複雑すぎます。どうすればこれを達成できますか?

4

1 に答える 1

1

生きているブロックのいずれかを選び、フラッドフィルを実行してから、他のすべての生きているブロックに到達したかどうかを確認します。

于 2013-01-22T14:44:36.790 に答える