一 问题描述
计算骑士从一个位置移动到另外一个位置所需的最少移动次数。骑士移动规则如下图。
输入:测试用例包含3行。
第1行:表示棋盘的长度 L,范围在 [4,300],棋盘的大小为 L * L。
第2行:骑士在棋盘的开始位置。
第3行:骑士在棋盘的结束位置。
输出:输出骑士从起点移动到终点所需的最少移动次数。如果起点和终点相等,则移动次数为零。
下面是三组测试用例的结果。
输入 |
输出 |
8 (0,0) (7,0) |
5 |
100 (0,0) (30,50) |
28 |
10 (1,1) (1,1) |
0 |
二 算法设计
本问题求解棋盘从起点到终点最短距离问题可以使用队列进行广度优先搜索,步骤如下:
1 如果起点正好等于终点,则返回 0。
2 将起点放入队列。
3 如果队列不为空,则队头出队,否则扩