HELP!!

WA90 ̄へ ̄
代码:

#include<bits/stdc++.h>
using namespace std;
queue<int>x,x1;
int vis[301][301],ans[301][301]={0};
int dx[8]={-2,-2,2,2,1,-1,1,-1};
int dy[8]={-1,1,-1,1,2,-2,-2,2};
int main(){
	int n,start_x,start_y,fx,fy;
	cin>>n>>start_x>>start_y>>fx>>fy;
	x.push(start_x);
	x1.push(start_y);
	ans[start_x][start_y]=0;
	vis[start_x][start_y]=1;
	while(!x.empty()){
		for(int i=0;i<8;i++){
			int next_x=x.front()+dx[i];
			int next_y=x1.front()+dy[i];
			if((next_x>0&&next_x<=n)&&(next_y>0&&next_y<=n)&&vis[next_x][next_y]==0){
				vis[next_x][next_y]=1;
				ans[next_x][next_y]=ans[x.front()][x1.front()]+1;
				x.push(next_x);
				x1.push(next_y);
			}
		}
		x.pop();
		x1.pop();
	}
	cout<<ans[fx][fy];
	return 0;
}
1 个赞

题目:

A. 骑士出行

Problem ID: 3330

Contest ID: 5349

必做题

Wrong Answer

90 分

时间:0.2s 空间:32M

题目描述:

国际象棋中的骑士(走日字型),从棋盘上一个点走到另一个点最少需要几步。(起点记作0步)

[image]

输入格式:

第一行输入一个整数n,表示棋盘的大小为n∗n,棋盘两个维度的坐标都是从0到n-1

接下来两行每行两个整数分别表示出发点的坐标与终点的坐标。

输出格式:

输出一个整数,表示最小步数

样例输入:

100 0 0 30 50

样例输出:

28

约定:

1<=n<=300

广搜

本蒟蒻不会(o´・ェ・`o)

把马的遍历套一下,把m删掉(m=n),打完表后输出目标格子里的数

1 个赞