- Description
输入一个n×n的黑白图像(1表示黑色,0表示白色),任务是统计其中八连块的个数。如果两个黑格子有公共边或者公共顶点,就说它们属于同一个八连块。如下图所示的图形有3个八连块。
- Input
第1行输入一个正整数n(n≤700),此后输入n行,每行是由n个0或1组成的字符串。
- Output
在输入黑白图像中,八连块的个数
- Sample Input
6
100100
001010
000000
110000
111000
010100
- Sample Output
3
#include<stdio.h>
#include<string.h>
char a[710][710]={"0"};
int visit[710][710]={0};
int count=0;
void bfs(int n,int m)
{
if(visit[n][m])return ;
visit[n][m]=1;
if(a[n][m]=='1')
{
bfs(n-1,m-1);bfs(n-1,m);bfs(n-1,m+1);
bfs(n,m-1); bfs(n,m+1);
bfs(n+1,m-1);bfs(n+1,m);bfs(n+1,m+1);
}
return ;
}
int main()
{
int n,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
getchar();
for(j=1;j<=n;j++)
a[i][j]=getchar();
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][j]=='1'&&!visit[i][j]){count++;bfs(i,j);}
printf("%d\n",count);
return 0;
}
本博客介绍了一种算法用于统计给定n×n黑白图像中的八连块个数,通过BFS遍历算法实现,适用于图像处理领域的开发者。
4181

被折叠的 条评论
为什么被折叠?



