RU | EN | FR | JP | DE | CH | KR
各セルが水('W')または陸地('L')で表される二次元配列として表される湖地図が与えられ、この地図上の個々の島の数を決定するタスクです。 島は、水に囲まれた水平または垂直に隣接した(接続された)陸地セルのグループとして定義されます。
例の湖地図:
[ ['W', 'L', 'W', 'W'], ['W', 'L', 'L', 'W'], ['W', 'W', 'L', 'W'], ['L', 'W', 'W', 'L'] ]
期待される結果:地図上には3つの個別の島があります。 1つの島は、2番目の列にある2つの隣接する'L'セルで構成され、2つ目は3行目、3列目の1つのセルで構成され、3つ目は最後の行の2つの対角に隣接しないセルで構成されています。
- マップ上の島の数を決定するために幅優先探索(BFS)を使用するアルゴリズムを開発する。
- 訪問およびチェックされたセルをマークして、検索プロセスを可視化する。
- 検索プロセス中に取られたステップ(移動)の数を数える。
- 島のカウンターとBFS用の空のキューを初期化します。
- マップ上の各セルを反復処理します。
- 現在のセルが陸地であり、まだ訪問されていない場合、島を検索するためにBFSを開始します。
- BFS中に訪問されたセルをマークし、ステップカウンターを増やします。
- 現在の島のすべての隣接セルを探索すると、BFSが終了します。
- マップ上のすべてのセルに対してステップ3-5を繰り返します。
アルゴリズムの実行中に訪問およびチェックされたセルを可視化します。これにより、地図上で島を検索するプロセスを視覚的に表現するのに役立ちます。
アルゴリズムの完了後、湖地図上の個々の島の数と検索プロセス中に取られたステップ(移動)の数が得られます。
このプロジェクトはMITライセンスの下でライセンスされています - 詳細については、LICENSEファイルを参照してください。