# 填涂颜色
0 0 0 0 0 0
0 0 0 1 1 1
0 1 1 0 0 1
1 1 0 0 0 1
1 0 0 1 0 1
1 1 1 1 1 1
```
```plain
0 0 0 0 0 0
0 0 0 1 1 1
0 1 1 2 2 1
1 1 2 2 2 1
1 2 2 1 2 1
1 1 1 1 1 1
```
## 样例 #1
### 样例输入 #1
```
6
0 0 0 0 0 0
0 0 1 1 1 1
0 1 1 0 0 1
1 1 0 0 0 1
1 0 0 0 0 1
1 1 1 1 1 1
```
### 样例输出 #1
```
0 0 0 0 0 0
0 0 1 1 1 1
0 1 1 2 2 1
1 1 2 2 2 1
1 2 2 2 2 1
1 1 1 1 1 1
```
解题思路:扫外面零变成3,最后在遍历
#include<iostream>
using namespace std;
const int N = 30;
int g[N][N], n;
bool vis[N][N];
void dfs(int x, int y)
{
if (x >= 0 && y >= 0 && x <= n+1&& y <= n+1)
{
if (g[x][y] == 1 || g[x][y] == 3)
{
return;
}
else
{
g[x][y] = 3;
dfs(x + 1, y);
dfs(x - 1, y);
dfs(x, y + 1);
dfs(x, y - 1);
}
}
}
int main()
{
cin >> n;
for (int i = 1; i<=n; i++)
{
for (int j = 1; j<=n; j++)
{
cin >> g[i][j];
}
}
dfs(0, 0);
for (int i = 1; i<=n; i++) {
for (int j = 1; j<=n; j++)
{
if (g[i][j] == 3)
{
g[i][j] = 0;
}
else if (g[i][j] == 0)
{
g[i][j] = 2;
}
}
}
for (int i = 1; i<=n; i++) {
for (int j = 1;j<=n; j++)
{
cout << g[i][j] << " ";
}
cout << endl;
}
return 0;
}