萌新刚学OI,深搜求调,马蜂良好
查看原帖
萌新刚学OI,深搜求调,马蜂良好
1120417
douhuazhenren1楼主2024/4/25 20:15
#include<iostream>
using namespace std;
int n,dx[4]={1,-1,0,0},dy[4]={0,0,1,-1},a[35][35];
void NASA(int o,int p)
{
	int x=o,y=p;
	a[o][p]=0;
	for(int i=0;i<4;i++)
	{	
		x=x+dx[i];
		y=y+dy[i];
		if(x<=0 || y<=0 || x>n || y>n || a[x][y]==1)
			return;
		else
			NASA(x,y);
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
		{
			cin>>a[i][j];
			if(a[i][j]==0)
				a[i][j]=2;
		}

	for(int i=1,j=1;i<=n;i++)
		if(a[i][j]==2)//上
			NASA(i,j);

	for(int i=1,j=n;i<=n;i++)
		if(a[i][j]==2)//下
			NASA(i,j);

	for(int i=1,j=1;j<=n;j++)
		if(a[i][j]==2)//左
			NASA(i,j);

	for(int i=n,j=1;j<=n;j++)
		if(a[i][j]==2)//右
			NASA(i,j);

	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}

思路大概就是先把所有都涂成2,然后从四面八方找,把四周的变成零

2024/4/25 20:15
加载中...