输入:
1 1 0 0
1 1 0 0
1 0 1 0
1 0 0 1
输出:
2 2 0 0
2 2 0 0
2 0 1 0
2 0 0 1
#include<iostream>
using namespace std;
int N,ans;
int map[35][35];
int Dir[4][2]={{-1,0},{0,1},{1,0},{0,-1}};
void dfs(int x,int y)
{
map[x][y]=2;
for(int i=0; i<4; i++)
{
int tx=x+Dir[i][0];
int ty=y+Dir[i][1];
if(x<1 || x>N || y<1 || y>N || map[tx][ty]!=1)
{
continue;
}
ans++,dfs(tx,ty);
}
return ;
}
void print()
{
for(int i=1; i<=N; i++)
{
for(int j=1; j<=N; j++)
{
cout<<map[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
}
int main()
{
cin>>N;
for(int i=1; i<=N; i++)
{
for(int j=1; j<=N; j++)
{
cin>>map[i][j];
}
}
for(int i=1; i<=N; i++)
{
for(int j=1; j<=N; j++)
{
if(map[i][j]==1)
{
ans=0;
dfs(i,j);
if(ans==0)
map[i][j]=1;
print();
}
}
}
return 0;
}
/*
*/