```cpp
#include<bits/stdc++.h>
using namespace std;
int dt[100][100];
int n;
bool flag;
void move()
{
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=n;ii++)
{
if (dt[i][ii]==-1)
{
if (dt[i-1][ii]==0) {flag=1;dt[i-1][ii]=-1;}
if (dt[i+1][ii]==0) {flag=1;dt[i+1][ii]=-1;}
if (dt[i][ii-1]==0) {flag=1;dt[i][ii-1]=-1;}
if (dt[i][ii+1]==0) {flag=1;dt[i][ii+1]=-1;}
}
}
}
if (flag==0) return;
else {flag=0;move();}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
for(int ii=1;ii<=n;ii++)
cin>>dt[i][ii];
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=n;ii++)
{
if (dt[i][ii]==0) dt[i][ii]=-1;
else break;
}
for(int ii=n;ii>=1;ii--)
{
if (dt[i][ii]==0) dt[i][ii]=-1;
else break;
}
}
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=n;ii++)
{
if (dt[ii][i]==0) dt[ii][i]=-1;
else break;
}
for(int ii=n;ii>=1;ii--)
{
if (dt[ii][i]==0) dt[ii][i]=-1;
else break;
}
}
move();
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=n;ii++)
{
if (dt[i][ii]==-1) cout<<0<<" ";
if (dt[i][ii]==0) cout<<2<<" ";
if (dt[i][ii]==1) cout<<1<<" ";
}
cout<<endl;
}
}
```
by ⚡小林孑⚡ @ 2018-11-18 21:45:17
同机房资瓷
by nofall @ 2018-11-18 21:47:04
```cpp
#include<bits/stdc++.h>
using namespace std;
const int f[4][2]={{-1,0},{0,1},{1,0},{0,-1}};
int n,a[35][35],b[35][35];
bool check(int x,int y){
if(x<0||x>n+1||y<0||y>n+1) return 0;
return !a[x][y];
}
void DFS(int t,int x,int y){
a[x][y]=t;
for(int i=0;i<4;i++)
if(check(x+f[i][0],y+f[i][1])) DFS(t,x+f[i][0],y+f[i][1]);
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) scanf("%d",&a[i][j]),b[i][j]=a[i][j];
DFS(1,0,0);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(!a[i][j]) DFS(2,i,j);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
if(a[i][j]==b[i][j]) printf("1 ");else
if(a[i][j]==1) printf("0 ");else printf("2 ");
printf("\n");
}
return 0;
}
```
by nofall @ 2018-11-18 21:47:21
@[zws666](/space/show?uid=119959) 嗝,那可以帮我看看有什么问题吗
加了注释:
```cpp
void color(int x,int y)
{
a[x][y]=2;//涂上2
for(k=0;k<=3;k++)//往4个方向走
{
int tx=x+f[k][0],ty=y+f[k][1];//这是走到的位置
if(tx<1||tx>n||ty<1||ty>n||a[tx][ty]!=0)//看看有没有越界,或到了不该到的地方(1上面)
continue;//如果有,换个方向走
color(tx,ty);//没有,那就继续走
}
return ;
}//就是这样
```
by A_Đark_Horcrux @ 2018-11-18 21:51:23
@[Lonely_people](/space/show?uid=118317) 咳,咳咳
by A_Đark_Horcrux @ 2018-11-18 21:56:48
@[Bilion_冰凌帅](/space/show?uid=54372) 您这是bfs?长见识了
by tocek_shiki @ 2018-11-18 22:03:02
@[Bilion_冰凌帅](/space/show?uid=54372)
```cpp
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=n;ii++)
{
if (dt[i][ii]==0) dt[i][ii]=2;
else break;
}
for(int ii=n;ii>=1;ii--)
{
if (dt[i][ii]==0) dt[i][ii]=2;
else break;
}
}
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=n;ii++)
{
if (dt[ii][i]==0) dt[ii][i]=2;
else break;
}
for(int ii=n;ii>=1;ii--)
{
if (dt[ii][i]==0) dt[ii][i]=2;
else break;
}
}
```
还是用小蒟蒻的for循环吧qwq
by ⚡小林孑⚡ @ 2018-11-18 22:08:33
@[寒炽·刻刻帝](/space/show?uid=49562) ++
by _breeze @ 2018-11-18 22:09:01
@[Bilion_冰凌帅](/space/show?uid=54372) 你的标题成功的吸引了我
by 犇犇犇犇 @ 2018-11-18 22:10:58
@[寒炽·刻刻帝](/space/show?uid=49562) @[zws666](/space/show?uid=119959) DFS啊啊啊,我是想要DFS的代码啊
by A_Đark_Horcrux @ 2018-11-19 12:34:35