二次元配列を特定条件で全捜査する(BFS)

コード(JavaScript)

ロジックの説明

ステップ内容
① visited配列同じセルを二重チェックしないよう管理
② BFS上下左右に隣接し、かつ同じmagicElのセルを再帰的に収集
③ グループ判定収集したセル数が10以上なら対象グループ全体に処理
④ elLevelアップMath.min(...+ 1, 2) でキャップ制限

BFSコードの解説

まず全体の「考え方」

BFS(幅優先探索)は 「近い場所から順番に探索する」 アルゴリズムです。 池に石を投げたときの波紋のように、起点から隣へ隣へと広がっていくイメージです。

queue(待ち行列)とは

queue は「次に調べるべき座標を並べた列」です。 最初は起点のセル [r, c] だけが入っています。

queue.shift() とは

shift() は配列の先頭を1つ取り出すメソッドです。

const [cr, cc] = とは(分割代入)

これが「難しい」と感じた部分ですね。分割代入(Destructuring) という構文です。

cr は current row(現在の行)、cc は current col(現在の列)です。

ループ全体の流れ

具体的な動きはこうなります:

visited に「調べた印」をつけておくことで、同じセルを二度調べないのがポイントです。

コメント

タイトルとURLをコピーしました