有没有大神叫一下蒟蒻这题哪里错了,第三个点没过,其他全过
查看原帖
有没有大神叫一下蒟蒻这题哪里错了,第三个点没过,其他全过
284521
queen_street楼主2021/7/7 11:55
#include<bits/stdc++.h>
using namespace std;

struct node
{
	int x,y;
};

queue <node> a;
int s[31][31],b[31][31];
int dx[5]={0,-1,1,0,0},dy[5]={0,0,0,-1,1};

int main()
{
	int i,j,n;
	cin>>n;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
		{
			cin>>s[i][j];
			if(s[i][j]==1)
			{
				b[i][j]=3;
			}
		}
	}
	node p,p2;
	p.x=1;
	p.y=1;
	p2.x=n;
	p2.y=n;
	a.push(p);
	int newx,newy;
	while(!a.empty())
	{
		node e;
		e=a.front();
		
		for(i=1;i<=4;i++)
		{
			newx=e.x+dx[i];
			newy=e.y+dy[i];
			if(newx>=1 && newx<=30 && newy>=1 && newy<=30 && b[newx][newy]==0 && s[i][j]==0)
			{
				node k;
				k.x=newx;
				k.y=newy;
				a.push(k);
				b[k.x][k.y]=1;
			}
		}
		a.pop();
	}
	a.push(p2);
	while(!a.empty())
	{
		node e;
		e=a.front();
		
		for(i=1;i<=4;i++)
		{
			newx=e.x+dx[i];
			newy=e.y+dy[i];
			if(newx>=1 && newx<=30 && newy>=1 && newy<=30 && b[newx][newy]==0 && s[i][j]==0)
			{
				node k;
				k.x=newx;
				k.y=newy;
				a.push(k);
				b[k.x][k.y]=1;
			}
		}
		a.pop();
	}
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
		{
			if(b[i][j]==3)
			{
				cout<<1<<" ";
			}
			else if(b[i][j]==1)
			{
				cout<<0<<" ";
			}
			else if(b[i][j]==0)
			{
				cout<<2<<" "; 
			}
			
		}
		cout<<endl;
	}
}
2021/7/7 11:55
加载中...