题目内容
题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步
输入格式 一行四个数据,棋盘的大小和马的坐标
输出格式 一个n * m的矩阵,代表马到达某个点最少要走几步(左对齐,宽5格,不能到达则输出-1)
输出入输出样例
输入
3 3 1 1
输出
0 3 2
3 -1 1
2 1 4
分析
运用广度优先搜索,从起始位置开始跳马,然后在能够跳到的位置标上需要跳的次数。
需注意:
1、输出格式宽5格,左对齐,要用printf(”%-5d“,…)
2、队列要开得足够大
代码
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
int n,m;
int a[500][500]={
0};
struct Node{
int x,y;
int tms;//次数 设为队列的第三个域
};
int dx[9]={
0,-2,-1,1,2,2,