1.
编写一个程序,计算一个骑士从棋盘上的一个格子到另一个格子所需的最小步数。骑士一步可以移动到的位置由下图给出。
输入格式
第一行给出骑士的数量 nn。
在接下来的 3n3n 行中,每 33 行描述了一个骑士。其中,
- 第一行一个整数 LL 表示棋盘的大小,整个棋盘大小为 L\times LL×L;
- 第二行和第三行分别包含一对整数 (x,y)(x,y),表示骑士的起始点和终点。假设对于每一个骑士,起始点和终点均合理。
输出格式
对每一个骑士,输出一行一个整数表示需要移动的最小步数。如果起始点和终点相同,则输出 00。
样例
Input | Output |
---|---|
3 8 0 0 7 0 100 0 0 30 50 10 1 1 1 1 |
5 28 0 |
数据范围与提示
对于 100\%100% 的数据,有 4\le L\le 3004≤L≤300,保证 0\le x,y\le L-10≤x,y≤L−1。
思路:广度优先搜索
代码:
#include<stdio.h>
struct note
{
int x;
int y;