黑白图像

题目描述:

 

代码描述:

 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 }

运行结果:

 

posted @ 2020-04-17 11:29  kakusan  阅读(152)  评论(0编辑  收藏  举报