Problem C: 骑士移动
[Creator : ]
Description
写程序,计算骑士从一个位置移动到另一个位置所需的最少移动次数。骑士移动的规则如下图所示。

Input
输入的第1行为测试用例的个数N。每个测试用例都包含3行。
第1行表示棋盘的长度L(4≤L≤300),棋盘的大小为LxL;第2行和第3行包含一对{0,...,L-1}x{0,...L-1}的整数,表示骑士在棋盘上的起始位置和结束位置。
假设这些位置是该棋盘上的有效位置。
Output
对于每个测试用例,都单行输出骑士从起点移动到终点所需的最少移动次数。
如果起点和终点相等,则移动次数为零。
Sample Input Copy
3
8
0 0
Sample Output Copy
5
28
0
7 0
100
0 0
30 50
10
1 1
1 1
HINT
队列(queue)只允许从队尾入队、从队头出队,不允许在中间位置插入和删除,不支持数
组表示法和随机访问。使用queue 时需要引入头文件#include<queue>。队列的基本操作很简单,
包括入队、出队、取队头、判断队空、求队列大小。
组表示法和随机访问。使用queue 时需要引入头文件#include<queue>。队列的基本操作很简单,
包括入队、出队、取队头、判断队空、求队列大小。
- queue<int>q:创建一个空队q,数据类型为int。
- push(x):x入队。
- pop():出队。
- front():取队头(未出队)。
- empty():判断队列是否为空,若为空,则返回true。
- size():求队列大小,返回队列中的元素个数。