题目
现有一个n∗m大小的棋盘,在棋盘的第x行第y列的位置放置了一个棋子,其他位置中的一部分放置了障碍棋子。棋子的走位参照中国象棋的“马”(障碍棋子将成为“马脚”)。求该棋子到棋盘上每个位置的最小步数。
注1
:中国象棋中“马”的走位为“日”字形,如下图所示。
注2
:与“马”直接相邻的棋子会成为“马脚”,“马”不能往以“马”=>“马脚”为长边的方向前进,如下图所示。
思考
利用bfs遍历,最主要的就是处理障碍问题。注意到长边方向前进,前面有障碍的话,就会导致马撇脚。例如上图4*4的棋盘,点坐标为(x,y),马在(2,2),障碍在(3,2),马需要向(1,4)去,则增长量为dx = 2,dy = -1