#54634: BFS解法


uf018127 (Jacob)


這題是BFS,看個幾張圖就有感覺了。

 0 1 1   1 0 1   0 1 1 x .
 x 2 x   2 x 2   0 x 2 3 3
 3 2 3   2 3 2   0 1 1 x 4

1. 用二維陣列建立地圖,None:障礙物,-2:終點,-1:沒走過,非負整數:第i輪走過(轉彎成本i)。
2. 從第0輪開始,偶數輪往下走到底,奇數輪左右都走到底。
3. 前面「走到底」的過程中,如果撞到走過的格子就可以停了。分析如下
   a. BFS每輪成本+1,新格子成本必然大於或等於舊格子。
   b. 如果新格子成本大於舊格子,舊格子只要轉個方向就可以變成新格子。
   c. 如果新格子成本等於舊格子,必然同為左右,既然下一步都只能往下,不需區分方向。