忽略上面的吧, 测试发现有一个测试点过不了, 我还是太年轻了.
by li1127217ye @ 2017-09-22 09:03:39
应该是存在左边界,右边界,上边界,下边界的点肯定是数字"2"了.
by uhgariej @ 2017-09-22 15:02:38
好像是的
按这个思路A了
...cpp
```cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,flag[31][31],x[901],y[901],tot=0,u,d,l,r;
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
cin>>flag[i][j];
if(flag[i][j]){
x[++tot]=i;
y[tot]=j;
}
}
for(int i=2;i<n;i++)
for(int j=2;j<n;j++){
if(!flag[i][j]){
u=d=l=r=0;
for(int k=1;k<=tot;k++){
if(x[k]==i&&y[k]>j)r=1;
if(x[k]==i&&y[k]<j)l=1;
if(y[k]==j&&x[k]<i)d=1;
if(y[k]==j&&x[k]>i)u=1;
}
if(r&&l&&u&&d)flag[i][j]=2;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)cout<<flag[i][j]<<" ";
cout<<endl;
}
}
```
by 「已注销」 @ 2017-09-25 17:15:47