为什么会RE!?
查看原帖
为什么会RE!?
1030575
Shanxiao520楼主2024/8/2 21:06

dev--c++运行时没有任何问题。

#include<bits/stdc++.h>
using namespace std;
int a[500][500],n,m,x,y,bj[500][500],fx[15]={0,-1,-2,-2,-1,1,2,2,1},fy[15]={0,2,1,-1,-2,2,1,-1,-2};
queue< pair<int,int> > q;
bool go(int x,int y)
{
	if(x>=1&&x<=n&&y>=1&&y<=m&&bj[x][y]==0)
	{
		return true;
	}
	else
	{
		return false;
	}
}
void bfs(int x,int y,int b)
{
	a[x][y]=b;
	bj[x][y]=1;
	for(int i=1;i<=8;i++)
	{
		if(go(x+fx[i],y+fy[i]))
		{
			a[x+fx[i]][y+fy[i]]=b+1;
			q.push(make_pair(x+fx[i],y+fy[i]));
		}
		bj[x+fx[i]][y+fy[i]]=1;
	}
	while(!q.empty())
	{
		int zbx=q.front().first;
		int zby=q.front().second;
		q.pop();
		bfs(zbx,zby,a[zbx][zby]);
	}
}
int main()
{
	cin>>n>>m>>x>>y;
	for(int i=1;i<=n;i++)
	{
		for(int ii=1;ii<=m;ii++)
		{
			a[i][ii]=-1;
		}
	}
	bj[x][y]=1;
	bfs(x,y,0);
	for(int i=1;i<=n;i++)
	{
		for(int ii=1;ii<=m;ii++)
		{
			cout<<a[i][ii]<<"    ";
		}
		cout<<endl;
	}
}
2024/8/2 21:06
加载中...