第九个点TLE了,大佬求教
查看原帖
第九个点TLE了,大佬求教
99742
zyh694009800楼主2020/7/23 11:44
#include<bits/stdc++.h>
using namespace std;
int i,j,n,m,k,x,y;
long wz[401][401];
void d(int xx,int yy)
{
	if(xx+2<=n&&yy+1<=m)
	{
		if(wz[xx+2][yy+1]>wz[xx][yy]+1)
		{
		    wz[xx+2][yy+1]=wz[xx][yy]+1;
		    d(xx+2,yy+1);
		}
	}
	if(xx+2<=n&&yy-1>0)
	{
		if(wz[xx+2][yy-1]>wz[xx][yy]+1)
		{
		    wz[xx+2][yy-1]=wz[xx][yy]+1;
		    d(xx+2,yy-1);
		}
	}
	if(xx-2>0&&yy+1<=m)
	{
		if(wz[xx-2][yy+1]>wz[xx][yy]+1)
		{
		    wz[xx-2][yy+1]=wz[xx][yy]+1;
		    d(xx-2,yy+1);
		}
	}
	if(xx-2>0&&yy-1>0)
	{
		if(wz[xx-2][yy-1]>wz[xx][yy]+1)
		{
		    wz[xx-2][yy-1]=wz[xx][yy]+1;
		    d(xx-2,yy-1);
		}
	}
	if(xx+1<=n&&yy+2<=m)
	{
		if(wz[xx+1][yy+2]>wz[xx][yy]+1)
		{
		    wz[xx+1][yy+2]=wz[xx][yy]+1;
		    d(xx+1,yy+2);
		}
	}
	if(xx-1>0&&yy+2<=m)
	{
		if(wz[xx-1][yy+2]>wz[xx][yy]+1)
		{
		    wz[xx-1][yy+2]=wz[xx][yy]+1;
		    d(xx-1,yy+2);
		}
	}
	if(xx+1<=n&&yy-2>0)
	{
		if(wz[xx+1][yy-2]>wz[xx][yy]+1)
		{
		    wz[xx+1][yy-2]=wz[xx][yy]+1;
		    d(xx+1,yy-2);
		}
	}
	if(xx-1>0&&yy-2>0)
	{
		if(wz[xx-1][yy-2]>wz[xx][yy]+1)
		{
		    wz[xx-1][yy-2]=wz[xx][yy]+1;
		    d(xx-1,yy-2);
		}
	}
}
int main()
{
	cin>>n>>m>>x>>y;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			wz[i][j]=n*m;
		}
	}
	wz[x][y]=0;
    d(x,y);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(wz[i][j]!=n*m)
			{
			    if(wz[i][j]<=9)
				{
					cout<<wz[i][j]<<"    ";
				}
				else if(wz[i][j]>9&&wz[i][j]<=99)
				{
					cout<<wz[i][j]<<"   ";
				}
				else if(wz[i][j]>99)
				{
					cout<<wz[i][j]<<"  ";
				}
			}
			if(wz[i][j]==n*m)cout<<-1<<"   ";
		}
		cout<<endl;
	}
	return 0;
}
```第九个点TLE了,大佬求教
2020/7/23 11:44
加载中...