この記事で使うアルゴリズム
幅優先探索
はじめに
カテゴリー競プロ初中級者100問では、Qiita
にて@e869120
さんがレッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】としてまとめられている100問をPython
で解いています。
全問題の一覧はこちらです
問題
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1166&lang=jp
この問題は幅優先探索を用いて解くことができます。
方針
幅優先探索を行うことで最短経路を求めることができます。幅優先探索はキューを用いて実装できますが、ゴールに到達する前にキューが空になった場合は到達不可能ということになります。
この問題のような迷路を解く問題では、移動可能かどうかを判定する際に壁の有無を参照すれば良いです。周囲には全て壁が配置されていることとして、壁の有無の判定を訪問フラグの判定より先に行うことで、配列外参照をケアしなくてよく実装が簡単になります。
コード
1 | from collections import deque |
記事情報
- 投稿日:2020年6月7日
- 最終更新日:2020年6月7日