第二个点wa了,90分蒟蒻求助
查看原帖
第二个点wa了,90分蒟蒻求助
93278
dongsir楼主2020/6/23 19:48

输入

2 3 1 1

输出

0    -1   -1   
-1   -1   1    

本地输出

0    1    2
1    -1   1

代码

#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,w[500][500],head,tail,step;
int a[100000],b[100000],c[100000];
int dir[8][2]{{-2,-1},{-1,-2},{1,2},{2,1},{-2,1},{1,-2},{-1,2},{2,-1}};
int main()
{
	scanf("%d%d%d%d",&n,&m,&x,&y);
	tail++,a[tail]=x,b[tail]=y;
	while(head<=tail)
	{
		head++;
		for(int i=0;i<8;i++)
		{
			int dx=a[head]+dir[i][0],dy=b[head]+dir[i][1];
			if(dx>=1&&dy>=1&&dx<=n&&dy<=m)
			{
				if(w[dx][dy]==0)
				{
//					cout<<dx<<" "<<dy<<endl;
					tail++,a[tail]=dx,b[tail]=dy,c[tail]=c[head]+1;
					w[dx][dy]=c[tail];
				}
			}
		}
	}
	for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(w[i][j]==0) w[i][j]=-1;
	w[x][y]=0;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			printf("%-5d",w[i][j]);
		}
		printf("\n");
	}
	return 0;
}

望dalao指导

2020/6/23 19:48
加载中...