黑白图像
题目描述:
代码描述:
1 //黑白图像 2 #include<stdio.h> 3 #include<string.h> 4 #define MAX 20 5 int doted[MAX][MAX],vis[MAX][MAX]; 6 void dfs(int i,int j) 7 { 8 if(!doted[i][j]||vis[i][j]) return; 9 vis[i][j]=1; 10 dfs(i-1,j-1);dfs(i,j-1);dfs(i+1,j-1); 11 dfs(i-1,j); dfs(i+1,j); 12 dfs(i-1,j+1);dfs(i,j+1);dfs(i+1,j+1); 13 } 14 int main() 15 { 16 int n,count; 17 char s[MAX]; 18 while(scanf("%d",&n)==1&&n>0) 19 { 20 count=0; 21 memset(vis,0,sizeof(vis)); 22 for(int i=0;i<n;i++) 23 { 24 scanf("%s",s); 25 for(int j=0;j<n;j++) 26 { 27 doted[i+1][j+1]=s[j]-48; 28 } 29 } 30 for(i=1;i<=n;i++) 31 { 32 for(int j=1;j<=n;j++) 33 { 34 printf("%d ",doted[i][j]); 35 } 36 printf("\n"); 37 } 38 for(i=1;i<=n;i++) 39 { 40 for(int j=1;j<=n;j++) 41 { 42 if(doted[i][j]&&!vis[i][j]) 43 { 44 count++; 45 dfs(i,j); 46 } 47 } 48 } 49 printf("%d\n",count); 50 } 51 return 0; 52 }
运行结果: