马的遍历
题目描述
有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步
输入格式
一行四个数据,棋盘的大小和马的坐标
输出格式
一个n*m的矩阵,代表马到达某个点最少要走几步(左对齐,宽5格,不能到达则输出-1)
输入样例
3 3 1 1
输出样例
0 3 2
3 -1 1
2 1 4
题目来源
完整代码如下
#include<stdio.h>
#define MAX 170000
struct queue
{
int x;//行坐标
int y;//列坐标
};
struct queue que[MAX];//最多160000个点这里令MAX=170000
int head = 0, tail = 1;//队列引入
int a[401][401];
int n, m, sx, sy;
//定义8组方向,这里的t是try的缩写,表示去试探的方向
int tx[16] = {
2,-2,2,-2,-1,1,-1,1 };
int ty[16] = {
1,1,-1,-1,2,2,-2,-2 };
void init()
{
for (