dfs求调32pts玄关
查看原帖
dfs求调32pts玄关
1414964
dhlsgjr楼主2024/11/9 19:47
#include<bits/stdc++.h>
using namespace std;	
int mapp[35][35];int n;
int dx[]={0,0,0,1,-1},dy[]={0,1,-1,0,0};
void rs0(int x,int y)
{
	mapp[x][y]=-1;
	for(int i=1;i<=4;i++)
	{
		x+=dx[i],y+=dy[i];
		if(x<1||y<1||x>n||y>n)x-=dx[i],y-=dy[i];
		else if(mapp[x][y]==0||mapp[x][y]==2)
		{
			rs0(x,y);
			x-=dx[i],y-=dy[i];
		}
	}
}
void rs2(int x,int y)
{
	mapp[x][y]=2;
	for(int i=1;i<=4;i++)
	{
		x+=dx[i],y+=dy[i];
		if(x<1||y<1||x>n||y>n)x-=dx[i],y-=dy[i];
		else if(mapp[x][y]==0)
		{
			rs2(x,y);
			x-=dx[i],y-=dy[i];
		}
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cin>>mapp[i][j];
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
		
			if(i==1||j==1||j==n||i==n)
			{
				if(mapp[i][j]==0||mapp[i][j]==2)
				rs0(i,j);
			}
			else if(mapp[i][j]==0)
			{
				rs2(i,j);
			}
		}
	}
	
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(mapp[i][j]==-1)mapp[i][j]=0;
			cout<<mapp[i][j]<<" ";
		}
		cout<<endl;
	}
}
2024/11/9 19:47
加载中...