這題是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. 如果新格子成本等於舊格子,必然同為左右,既然下一步都只能往下,不需區分方向。