7个WA,3个TLE 求帮助!!!
查看原帖
7个WA,3个TLE 求帮助!!!
382201
Hellen68楼主2021/1/24 19:21

不知道为何0分,举了另一个例子也没毛病,求帮助!!!!!! 附上代码:

#include <bits/stdc++.h>
using namespace std;
int dx[8]={1,1,2,2,-1,-1,-2,-2};
int dy[8]={2,-2,1,-1,2,-2,1,-1};
int h[160005][3];
int a[401][401];
int ax,ay;
int t,w;
int zz;
int n,m;
void work(int tx,int ty,int wx,int wy)
{
	if(tx==wx&&ty==wy){
		zz=0;
		return;
	}
	
	memset(a,0,sizeof(a));
	t=0;w=1;
	h[1][0]=tx;
	h[1][1]=ty;
	h[1][2]=0;
	do
	{
		t++;
		int nx=h[t][0],ny=h[t][1];
		for(int i=0;i<=7;i++)
		{
			ax=nx+dx[i];
			ay=ny+dy[i];
			if(ax>0&&ax<=n&&ay>0&&ay<=m&&a[ax][ay]==0)
			{
				a[ax][ay]=1;
				w++;
				h[w][0]=ax;
				h[w][1]=ay;
				h[w][2]=h[t][2]+1;
				if(ax==wx&&ay==wy)
				{
					zz=h[w][2];
				}
			}
		}
	}while(t<w);
}
int main()
{
	int tx,ty;
	cin>>n>>m>>tx>>ty;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<m;j++)
		{
			zz=-1;
			work(tx,ty,i,j);
			cout<<zz<<"     ";
		}
		zz=-1;
		work(tx,ty,i,m);
		cout<<zz;
		cout<<endl;
	}
	
	return 0;
}

看dalao的题解看不懂,希望能挑一挑错,谢谢!

2021/1/24 19:21
加载中...