#include<bits/stdc++.h>
using namespace std;
int n,tu[31][31];
int h[32][2],l[32][2];
int main(){
//freopen("a.in","r",stdin);
cin>>n;
for(int i=0;i<32;i++){
h[i][1]=l[i][1]=50;
}
for(int i=0;i<n;i++){
for(int k=0;k<n;k++){
cin>>tu[i][k];
}
}
for(int i=0;i<n;i++){
for(int k=0;k<n;k++){
if(tu[i][k]==1){
if(k>h[i][0]){
h[i][0]=k;
}
if(k<h[i][1]){
h[i][1]=k;
}
if(i<l[k][1]){
l[k][1]=i;
}
if(i>l[k][0]){
l[k][0]=i;
}
}
}
}
// for(int i=0;i<6;i++){
// cout<<l[i][0]<<" "<<l[i][1]<<endl;
// }
for(int i=0;i<n;i++){
for(int k=0;k<n;k++){
if(tu[i][k]==0){
// if(i==4 and k==1){
// cout<<h[i][1] and i<h[i][0] and k>l[k][1] and k<l[k][0])<<endl;
// }
if(k>h[i][1] and k<h[i][0] and i>l[k][1] and i<l[k][0]){
tu[i][k]=2;
}else{
if(tu[i+1][k]==2){
tu[i+1][k]=0;
}
if(tu[i][k+1]==2){
tu[i][k+1]=0;
}
if(tu[i-1][k]==2){
tu[i-1][k]=0;
}if(tu[i][k-1]==2){
tu[i][k-1]=0;
}
}
}
}
}
for(int i=0;i<n;i++){
for(int k=0;k<n;k++){
cout<<tu[i][k]<<" ";
}
cout<<endl;
}
}
该代码有问题但仍然ac
8
1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 1
1 0 1 1 1 1 1 1
1 0 1 1 0 0 1 1
1 0 1 1 0 0 1 1
1 0 1 1 0 0 0 0
1 0 1 1 1 1 1 1
1 1 0 0 0 0 0 0
该数据无法通过,但洛谷上代码可以ac