wch666 @ 2023-09-13 21:46:53
#include<bits/stdc++.h>
using namespace std;
int n,a[35][35];
bool dfs(int x,int y)
{
bool flag1=false,flag2=false,flag3=false,flag4=false;
for(int i=0; i<=x; i++)
{
int j=y;
if(a[i][j] == 1)
{
flag1=true;
break;
}
flag1=false;
}
for(int i=x; i<=n+1; i++)
{
int j=y;
if(a[i][j] == 1)
{
flag2=true;
break;
}
flag2=false;
}
for(int i=0; i<=y; i++)
{
int j=x;
if(a[i][j] == 1)
{
flag3=true;
break;
}
flag3=false;
}
for(int i=y; i<=n+1; i++)
{
int j=x;
if(a[i][j] == 1)
{
flag4=true;
break;
}
flag4=false;
}
if(flag1 == true && flag2 == true && flag3 == true && flag4 == true)
return true;
else
return false;
}
int main()
{
cin>>n;
memset(a,0,1156);
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
cin>>a[i][j];
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
if(a[i][j] == 0 && ((i > 1 || i < n) && (j > 1 || j < n)))
{
if(dfs(i,j) == true)
a[i][j]=2;
else if(!dfs(i,j))
a[i][j]=0;
}
}
}
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}