萌新求助一道站外题
  • 板块题目总版
  • 楼主kong_xin_qi
  • 当前回复5
  • 已保存回复5
  • 发布时间2021/8/18 22:15
  • 上次更新2023/11/4 10:08:06
查看原帖
萌新求助一道站外题
239243
kong_xin_qi楼主2021/8/18 22:15

题目

#include <iostream>
using namespace std;
bool vis[301][301];
int dx[8]={2,-2,1,-1,2,-2,1,-1}, dy[8]={1,1,2,2,-1,-1,-2,-2};
int h[10001][4];
int m, n;
void bfs(int lx, int ly, int ex, int ey)
{
	vis[lx][ly]=1;
	int head=1, tail=1;
	h[1][1]=lx, h[1][2]=ly, h[1][3]=0; 
	while(head<=tail)
	{
		for(int i=0;i<8;i++)
		{
			int nx=h[head][1]+dx[i], ny=h[head][2]+dy[i];
			if(nx>=0&&nx<n&&ny>=0&&ny<n&&vis[nx][ny]!=1)
			{
				tail++;
				vis[nx][ny]=1;
				h[tail][1]=nx, h[tail][2]=ny, h[tail][3]=h[head][3]+1;
				if(nx==ex&&ny==ey)
				{
					cout<<h[tail][3]<<endl;
					return;
				}
			}
		}
		head++;
	}
}
int main()
{
	int x1, y1, x2, y2;
	cin>>m;
	for(int i=1;i<=m;i++)
	{
		cin>>n;
		cin>>x1>>y1;
		cin>>x2>>y2;
		if(x1==x2&&y1==y2)
			cout<<0<<endl;
		else
			bfs(x1, y1, x2, y2);
	}
	return 0;
} 

求大佬指教为何会RE

2021/8/18 22:15
加载中...