例题6.4.1

来源:互联网 发布:克利夫兰夺冠知乎 编辑:程序博客网 时间:2024/06/05 10:13

黑白图像

#include<stdio.h>#include<string.h> const int MAXN=256;int mat[MAXN][MAXN], vis[MAXN][MAXN];void dfs(int x,int y){if(!mat[x][y]||vis[x][y]){return;}vis[x][y]=1;dfs(x,y-1);  dfs(x-1,y-1);   dfs(x-1,y);  dfs(x-1,y+1);dfs(x,y+1);  dfs(x+1,y+1);   dfs(x+1,y);    dfs(x+1,y-1);}int main(){int n;scanf("%d",&n);char s[256];memset(mat,0,sizeof(mat));memset(vis,0,sizeof(vis));for(int i=0;i<n;i++){scanf("%s",s);for(int j=0;j<n;j++){mat[i+1][j+1]=s[j]-'0';}}int count=0;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(mat[i][j]&&!vis[i][j]){count++;dfs(i,j);}}}printf("%d\n",count);return 0;}


 

原创粉丝点击