社区讨论

不知道哪错了。。。玄关

P1443马的遍历参与者 2已保存回复 9

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
9 条
当前快照
1 份
快照标识符
@lo1oo9gr
此快照首次捕获于
2023/10/23 00:28
2 年前
此快照最后确认于
2023/11/03 01:10
2 年前
查看原帖
CPP
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;

int n,m,x,y;
bool flag[410][410];
int ans[410][410];
queue<int>sx;
queue<int>sy;

int dx[9]={0,-2,-1,+1,+2,-2,-1,+1,+2};
int dy[9]={0,-1,-2,-1,-1,+1,+2,+2,+1};

int main()
{
	scanf("%d%d%d%d",&n,&m,&x,&y);
	memset(ans,-1,sizeof(ans));
	ans[x][y]=0;
	flag[x][y]=1;
	sx.push(x);
	sy.push(y);
	
	while( !sx.empty() )
	{	x=sx.front();
		y=sy.front();
		sx.pop();
		sy.pop();
		
		for(int i=1;i<=8;i++)
		{	if( flag[x+dx[i]][y+dy[i]]==0 && x+dx[i]>0 && x+dx[i]<=n && y+dy[i]>0 && y+dy[i]<=m )
			{	sx.push(x+dx[i]);
				sy.push(y+dy[i]);
				flag[x+dx[i]][y+dy[i]]=1;
				ans[x+dx[i]][y+dy[i]]=ans[x][y]+1;
			}
		}
	}
	
	for(int i=1;i<=n;i++)
	{	for(int k=1;k<=m;k++)
		{	printf("%-5d",ans[i][k]);	}
		printf("\n");
	}
	
	return 0;
}

样例没过 10分求助

回复

9 条回复,欢迎继续交流。

正在加载回复...