【题目描述】
输入n代表有个n×n的棋盘,输入开始位置的坐标和结束位置的坐标,问一个骑士朝棋盘的八个方向走马字步,从开始坐标到结束坐标可以经过多少步。
【输入】
首先输入一个n,表示测试样例的个数。
每个测试样例有三行。
第一行是棋盘的大小L(4≤L≤300);
第二行和第三行分别表示马的起始位置和目标位置(0…L−1)。
【输出】
马移动的最小步数,起始位置和目标位置相同时输出0。
【输入样例】
3
8
0 0
7 0
100
0 0
30 50
10
1 1
1 1
【输出样例】
5
28
0
代码如下:
//1257:Knight Moves
#include<iostream>
#include<cstring>
using namespace std;
int l,r,c,k,i,j,m,T;//T组数据
int map[301][301];
int num,que[90001][3];//队列,que[i][2]记录走的第几步,que[i][0],记录走过的点横坐标x,que[i][1]纵坐标
int soux,souy,desx,desy,head,tail;//记录出发点、目标点的层数,坐标,
int dx[8]={-2,-1,1,2,2,1,-1,-2},
dy[8]={1,2,2,1,-1,-2,-2,-1};//马往8个方向跳
int main()
{
cin>>T