玄学错误求助
查看原帖
玄学错误求助
122836
World_Creater楼主2020/8/2 13:04
#include<bits/stdc++.h>
using namespace std;
int qx[1000],qy[1000],v[30][30],a[30][30],n,xr[4]={0,0,1,-1},yr[4]={1,-1,0,0};
void bfs(int x,int y)
{
	int h=0,t=1,k=2;
	qx[1]=x;
	qy[1]=y;
	while(h<t)
	{
		h++;
		for(int i=0;i<4;i++)
		{
			int tx=qx[h]+xr[i],ty=qy[h]+yr[i];
			if(tx<0||ty<0||tx>=n&&ty>=n)
			{
				k=-1;
				continue;
			}
			if(v[tx][ty]==0&&a[tx][ty]==0)
			{
				t++;
				qx[t]=tx;
				qy[t]=ty;
				v[tx][ty]=1;
			}
		}
	}
	for(int i=1;i<=t;i++)
	{
		a[qx[i]][qy[i]]=k;
	}
}
int main() {
	cin>>n;
	for(int i=0; i<n; i++)
		for(int j=0; j<n; j++)
			cin>>a[i][j];
	for(int i=0; i<n; i++)
		for(int j=0; j<n; j++) {
			if(a[i][j]==0&&v[i][j]==0) {
				bfs(i,j);
			}
		}
	for(int i=0; i<n; i++) {
		for(int j=0; j<n; j++)
			cout<<max(0,a[i][j])<<" ";
		cout<<endl;
	}
}

这份代码跑2,4点会RE,经本地测试,在所有代码(包括最后输出)跑完时,这个程序直接出错了。这是为什么,为什么这么玄学

2020/8/2 13:04
加载中...