2TLE求救
  • 板块P1443 马的遍历
  • 楼主osfly
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/2/9 11:19
  • 上次更新2023/11/5 03:30:28
查看原帖
2TLE求救
339299
osfly楼主2021/2/9 11:19
#include<cstdio>
#include<cstring>
int n,m;
int f[1000][1000];
bool vis[1000][1000];
int nxtx[8]={2,-2,2,-2,-1,1,-1,1};
int nxty[8]={1,1,-1,-1,2,2,-2,-2};
void dfs(int x,int y,int step)
{
	if(step>=f[x][y]) return ;
	f[x][y]=step;
	for(int i=0;i<8;i++)
	{
		int nx=x+nxtx[i];
		int ny=y+nxty[i];
		if(nx<1||ny<1||nx>n||ny>m) continue;
		if(vis[nx][ny]) continue;
		dfs(nx,ny,step+1);
	}
}
int main()
{
	memset(f,0x3f3f3f3f,sizeof(f));
	int x,y;
	scanf("%d%d%d%d",&n,&m,&x,&y);
	dfs(x,y,0);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(f[i][j]==0x3f3f3f3f) f[i][j]=-1;
			printf("%-5d",f[i][j]);
		}
		printf("\n");
	}
	return 0;
}
2021/2/9 11:19
加载中...