AOJ1166 Amazing Mazes

「AOJ1166 Amazing Mazes」の編集履歴(バックアップ)一覧に戻る

AOJ1166 Amazing Mazes - (2013/10/31 (木) 02:51:56) のソース

*AOJ1166 Amazing Mazes
**サイト
[http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1166&lang=jp]
**解説
渾身のギャグの問題です。
入力を理解しましょう。1と0は壁の存在の有無を示しています。
>||
 1
0 1
 0
1 0
||<
この入力において、1行目は縦に壁があること、2行目は横に壁がない・あるが連続すること、3行目は縦に壁がないこと、4行目は横に壁がある・ないが連続すること、5行目は縦に壁があること、を示します。
マップ全体を覆う壁は存在が自明なので入力に現れていないことに注意する必要があります。
図を描くと一発ですが面倒で描いてません(クソ)

入力を理解したらそのデータを配列に格納します。取りあえず2つの方式を挙げます。
>>
3次元配列では、wall[四方向][今いるy座標][今いるx座標] = 1(通行可能) | 0(通行不可)
4次元配列では、pass[ny][nx][今いるy座標][今いるx座標] = 1(通行可能) | 0(通行不可)
<<
とすれば良いでしょう。問題の制約が高さも幅も2以上30以下であるので、4次元配列を作っても解けます。メモリは食いますがわかりやすくて解きやすいです。