90分第8点TLE求助
查看原帖
90分第8点TLE求助
987407
luolie0804楼主2024/5/14 20:41
#include<bits/stdc++.h>
#define F(x,y,z,o) for(int o=x;o<=y;o+=z)
using namespace std;
int n,m,sx,sy;
int a[505][505];
int d[505][505];
int dx[8]={-2,-1,1,2,2,1,-1,-2};
int dy[8]={1,2,2,1,-1,-2,-2,-1};
void dr()
{
	cin>>n>>m>>sx>>sy;
	F(1,n,1,i)
	{
		F(1,m,1,j)
		{
			d[i][j]=INT_MAX;	
		} 
	}
}
void dg(int dep,int x,int y)
{
	if(dep<d[x][y])
	{
		d[x][y]=dep;
		F(0,7,1,i)
		{
			int tx=x+dx[i];
			int ty=y+dy[i];
			if(tx<1||tx>n||ty<1||ty>m&&a[tx][ty]!=0) continue;
			else dg(dep+1,tx,ty);
		}
	}
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	dr();
	dg(0,sx,sy);
	F(1,n,1,i)
	{
		F(1,m,1,j)
		{
			if(d[i][j]==INT_MAX) cout<<setw(4)<<-1<<' ';
			else cout<<setw(4)<<d[i][j]<<' ';
		}
		cout<<'\n';
	}
	return 0;
}

2024/5/14 20:41
加载中...