和样例只差一点

P1162 填涂颜色

@[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


|