80求助
查看原帖
80求助
780505
x1489631649楼主2023/12/5 20:44
#include <bits/stdc++.h>
using namespace std;
int vis[1000][1000];
struct node{
	int x,y;
	int step;
}q[90000];
void bfs(int x,int y)
{
	memset(vis,0,sizeof(vis));
	int t,h;
	t=h=1;
	q[h].x=x;
	q[h].y=y;
	q[h].step=0;
	vis[q[h].x][q[h].y]=1;
	while(h<=t)
	{
		int nx1=q[h].x+2,ny1=q[h].y+1;
		int nx2=q[h].x+2,ny2=q[h].y-1;
		int nx3=q[h].x-2,ny3=q[h].y+1;
		int nx4=q[h].x-2,ny4=q[h].y-1;
		int nx5=q[h].x+1,ny5=q[h].y+2;
		int nx6=q[h].x+1,ny6=q[h].y-2;
		int nx7=q[h].x-1,ny7=q[h].y+2;
		int nx8=q[h].x-1,ny8=q[h].y-2;
		int nx9=q[h].x+2,ny9=q[h].y+2;
		int nx10=q[h].x+2,ny10=q[h].y-2;
		int nx11=q[h].x-2,ny11=q[h].y+2;
		int nx12=q[h].x-2,ny12=q[h].y-2;
		if(nx1==1&&ny1==1||nx2==1&&ny2==1||nx3==1&&ny3==1||nx4==1&&ny4==1||nx5==1&&ny5==1||nx6==1&&ny6==1||nx7==1&&ny7==1||nx8==1&&ny8==1||nx9==1&&ny9==1||nx10==1&&ny10==1||nx11==1&&ny11==1||nx12==1&&ny12==1)
		{
			cout<<q[h].step+1<<endl;
			return;
		}
		if(nx1>=0&&ny1>=0&&vis[nx1][ny1]==0)
		{
			t++;
			q[t].x=nx1;
			q[t].y=ny1;
			q[t].step=q[h].step+1;
			vis[nx1][ny1]=1;
		}
		if(nx2>=0&&ny2>=0&&vis[nx2][ny2]==0)
		{
			t++;
			q[t].x=nx2;
			q[t].y=ny2;
			q[t].step=q[h].step+1;
			vis[nx2][ny2]=1;
		}
		if(nx3>=0&&ny3>=0&&vis[nx3][ny3]==0)
		{
			t++;
			q[t].x=nx3;
			q[t].y=ny3;
			q[t].step=q[h].step+1;
			vis[nx3][ny3]=1;
		}
		if(nx4>=0&&ny4>=0&&vis[nx4][ny4]==0)
		{
			t++;
			q[t].x=nx4;
			q[t].y=ny4;
			q[t].step=q[h].step+1;
			vis[nx4][ny4]=1;
		}
		if(nx5>=0&&ny5>=0&&vis[nx5][ny5]==0)
		{
			t++;
			q[t].x=nx5;
			q[t].y=ny5;
			q[t].step=q[h].step+1;
			vis[nx5][ny5]=1;
		}
		if(nx6>=0&&ny6>=0&&vis[nx6][ny6]==0)
		{
			t++;
			q[t].x=nx6;
			q[t].y=ny6;
			q[t].step=q[h].step+1;
			vis[nx6][ny6]=1;
		}
		if(nx7>=0&&ny7>=0&&vis[nx7][ny7]==0)
		{
			t++;
			q[t].x=nx7;
			q[t].y=ny7;
			q[t].step=q[h].step+1;
			vis[nx7][ny7]=1;
		}
		if(nx8>=0&&ny8>=0&&vis[nx8][ny8]==0)
		{
			t++;
			q[t].x=nx8;
			q[t].y=ny8;
			q[t].step=q[h].step+1;
			vis[nx8][ny8]=1;
		}
		if(nx9>=0&&ny9>=0&&vis[nx9][ny9]==0)
		{
			t++;
			q[t].x=nx9;
			q[t].y=ny9;
			q[t].step=q[h].step+1;
			vis[nx9][ny9]=1;
		}
		if(nx10>=0&&ny10>=0&&vis[nx10][ny10]==0)
		{
			t++;
			q[t].x=nx10;
			q[t].y=ny10;
			q[t].step=q[h].step+1;
			vis[nx10][ny10]=1;
		}
		if(nx11>=0&&ny11>=0&&vis[nx11][ny11]==0)
		{
			t++;
			q[t].x=nx11;
			q[t].y=ny11;
			q[t].step=q[h].step+1;
			vis[nx11][ny11]=1;
		}
		if(nx12>=0&&ny12>=0&&vis[nx12][ny12]==0)
		{
			t++;
			q[t].x=nx12;
			q[t].y=ny12;
			q[t].step=q[h].step+1;
			vis[nx12][ny12]=1;
		}
		h++;
	}
}
int main()
{
	int A1,A2,B1,B2;
	cin>>A1>>B1;
	cin>>A2>>B2;
	if(A1==1&&B1==1)
		cout<<0<<endl;
	else bfs(A1,B1);
	if(A2==1&&B2==1)
		cout<<0<<endl;
	else bfs(A2,B2);
	return 0;
}
2023/12/5 20:44
加载中...