每一个W的八个方向都是一类,计算有多少个不同类的!!!
#include<stdio.h>
char ch[109][109];
int n,m;
int dir[8][2]={1,0,-1,0,1,1,1,-1,0,1,0,-1,-1,1,-1,-1};
void dfs(int a,int b)
{
int i,c,d;
ch[a][b]='.';
for(i=0;i<8;i++)
{
c=a+dir[i][0];
d=b+dir[i][1];
if(c>=0&&c<n&&d>=0&&d<m)
{
if(ch[c][d]=='W')
{
ch[c][d]='.';
dfs(c,d);
}
}
}
}
int main()
{
int i,j,count,sx,sy;
while(scanf("%d%d",&n,&m)!=EOF)
{
count=0;
for(i=0;i<n;i++)
scanf("%s",ch[i]);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
if(ch[i][j]=='W')
{
sx=i;
sy=j;
dfs(sx,sy);
count++;
}
}
printf("%d\n",count);
}
return 0;
}