1568年。島の接続を解除するための最小日数
難易度: 難しい
トピック: 配列、深さ優先検索、幅優先検索、行列、強結合成分
m x n のバイナリ グリッドが与えられます。1 は土地を表し、0 は水を表します。 島は、最大4方向 (水平または垂直) に接続された 1 のグループです。
正確に 1 つの島がある場合、グリッドは接続されていると言われ、それ以外の場合は切断されていると言われます。
1 日で、**** 任意の単一の陸地セル (1) を水のセル (0) に変更することができます。
グリッドを切断する最小日数を返します。
例 1:
例 2:
制約:
ヒント:
解決策:
次の手順を検討する必要があります:
初期接続の確認: まず、グリッド内に複数のアイランドがあるかどうかを確認して、グリッドがすでに切断されているかどうかを確認します。すでに切断されている場合は 0 を返します。
単一の削除によって島が切断されるかどうかを確認する: グリッドの各セルを繰り返し実行します。セルを一時的に 1 から 0 (1 の場合) に変換し、島の数を数えることによってグリッドが切断されるかどうかを確認します。単一セルの変換によりアイランドが切断される場合は、1 を返します。
2 日間の切断: 単一のセル変換によってアイランドが切断されない場合は、任意の 2 つの隣接する陸上セルを変換することでグリッドを切断できます。したがって、2.
このソリューションを PHP で実装してみましょう: 1568。島の接続を解除するための最小日数
<?php // Example usage: $grid1 = [ [0, 1, 1, 0], [0, 1, 1, 0], [0, 0, 0, 0] ]; echo minDays($grid1); // Output: 2 $grid2 = [ [1, 1] ]; echo minDays($grid2); // Output: 2 ?>
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
以上が島を切断するまでの最小日数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。