题意
求由"W"和".“组成的二维数组中有多少组连通的"W”。
连通:上下左右左上左下右上右下相邻。
思路
DFS。
代码
#include <stdio.h>
char a[101][101];
int n,m,ans;
void dfs(int x,int y)
{
a[x][y]='.';
if (a[x-1][y+1]=='W') dfs(x-1,y+1);
if (a[x-1][y-1]=='W') dfs(x-1,y-1);
if (a[x+1][y-1]=='W') dfs(x+1,y-1);
if (a[x+1][y+1]=='W') dfs(x+1,y+1);
if (a[x-1][y]=='W') dfs(x-1,y);
if (a[x+1][y]=='W') dfs(x+1,y);
if (a[x][y-1]=='W') dfs(x,y-1);
if (a[x][y+1]=='W') dfs(x,y+1);
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=1;i<=n;++i)
for (int j=1;j<=m;++j)
for (a[i][j]=getchar();a[i][j]!='.'&&a[i][j]!='W';a[i][j]=getchar());
for (int i=1;i<=n;++i)
for (int j=1;j<=m;++j)
if (a[i][j]=='W') dfs(i,j),ans++;
printf("%d",ans);
return 0;
}