回答編集履歴

1

文言変更

2024/09/14 20:37

投稿

actorbug
actorbug

スコア2386

test CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  Wikipediaの幅優先探索の[疑似コード](https://ja.wikipedia.org/wiki/%E5%B9%85%E5%84%AA%E5%85%88%E6%8E%A2%E7%B4%A2#%E6%93%AC%E4%BC%BC%E3%82%B3%E3%83%BC%E3%83%89)を見ていただくと分かりますが、「i に訪問済みの印を付ける」処理と「i を Q(キュー) に追加」する処理は、同時に行う必要があります。
4
4
 
5
- しかし、ご提示のコードだと、訪問済みの印をつけているのが40行目、キューに追加するのが34, 52, 64, 76, 88行目と分かれているため、同じ座標に訪問済みの印がつかないままキュー上に何重にも登録されてしまい、キューのサイズが肥大化してメモリを使い果たしています。
5
+ しかし、ご提示のコードだと、訪問済みの印をつけているのが40行目、キューに追加するのが34, 52, 64, 76, 88行目と分かれているため、訪問済みの印がつかないままキュー上に同じ座標が何重にも登録されてしまい、キューのサイズが肥大化してメモリを使い果たしています。
6
6
 
7
7
  ループごとのキューのサイズを表示するようにして、入力として大き目(上限30x30)の壁のない迷路を渡せば、キューのサイズが異常に増えることが分かると思います。