站外题求助
  • 板块学术版
  • 楼主lizixuan1018
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/7/19 15:52
  • 上次更新2023/11/3 08:52:17
查看原帖
站外题求助
737075
lizixuan1018楼主2023/7/19 15:52

题目

#include<bits/stdc++.h>
using namespace std;
int n,m,b[400][400],dx[8]={-1,1,-1,1,-2,-2,2,2},dy[8]={2,2,-2,-2,-1,1,-1,1},x1,y_1,x2,y2,f[400][400];
void bfs(int x,int y){ 
	int head=0,tail=1,h[100001][3];
	h[1][1]=x,h[1][2]=y;
	do{
		head++;
		for(int i=0;i<8;i++){
			int xx=h[head][1]+dx[i],yy=h[head][2]+dy[i];
			if(xx>=0&&yy>=0&&xx<m&&yy<m&&f[xx][yy]==0){
				tail++;
				f[xx][yy]=1;
				h[tail][1]=xx,h[tail][2]=yy;
				b[xx][yy]=b[h[head][1]][h[head][2]]+1;
			}
		}
	}while(head<tail);
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>m;
		cin>>x1>>y_1>>x2>>y2;
		if(x1==x2&&y_1==y2){
			cout<<'0'<<endl;
			continue;
		}
		memset(b,0,sizeof(b));
		bfs(x1,y_1);
		memset(f,0,sizeof(f));
		cout<<b[x2][y2]<<endl;
	}
	return 0;
}

5测试点 4AC 1WA

2023/7/19 15:52
加载中...