@[cui_can](/user/444267) 这个不是floodfill吗
by lqyc @ 2021-07-17 15:47:18
@[liqingyacng](/user/350166) 代码相似,题目中说方阵内只有一个闭合圈,所以dfs(i+1,j+1);
by cui_can @ 2021-07-17 15:50:33
破案了,只用dfs1次
```cpp
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int mp[35][35];
bool visit[35][35];
int dx[]={-1,0,0,1};
int dy[]={0,-1,1,0};
void dfs(int x,int y){
for(int k=0;k<4;k++){
int nx=x+dx[k],ny=y+dy[k];
if(nx<1||nx>n||ny<1||ny>n||mp[nx][ny]||visit[nx][ny])continue;
mp[nx][ny]=2;visit[nx][ny]=1;
dfs(nx,ny);
}
return;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&mp[i][j]);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
if(mp[i][j]){
mp[i+1][j+1]=2;visit[i+1][j+1]=1;
dfs(i+1,j+1);
for(int i=1;i<=n;i++){//这儿
for(int j=1;j<=n;j++)
printf("%d ",mp[i][j]);
printf("\n");
}
return 0;
}
}
return 0;
}
```
@[liqingyacng](/user/350166) 谢谢提醒
by cui_can @ 2021-07-20 11:13:53