30分求助!
查看原帖
30分求助!
574215
OneLeft楼主2022/5/31 06:52
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,a[1005][1005],tx,ty;
int xx[9]={0,-2,-2,-1,-1,2,2,1,1};
int yy[9]={0,-1,1,-2,2,-1,1,-2,2};
queue<int>X,Y,ds;
void BFS(int x,int y)
{
	while(!X.empty())X.pop();
	while(!Y.empty())Y.pop();
	while(!ds.empty())ds.pop();
	X.push(x);
	Y.push(y);
	ds.push(1);
	while(!X.empty())
	{
		x=X.front();
		y=Y.front();
		a[x][y]=ds.front();
		if(x==n&&y==m)return;
		for(int i=1;i<=9;i++)
		{
			tx=x+xx[i];
			ty=y+yy[i];
			if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&a[tx][ty]==0)
			{
				X.push(tx);
				Y.push(ty);
				ds.push(ds.front()+1);
			}
		}
		X.pop();
		Y.pop();
		ds.pop();
	}
}
int main()
{
	cin>>n>>m>>x>>y;
	BFS(x,y);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
			printf("%-5d",a[i][j]-1);
		cout<<"\n";
	}
	
	return 0;
}

两点WA,其余TLE。

2022/5/31 06:52
加载中...