帮我看看为啥:
#include<bits/stdc++.h>
using namespace std;
int n,m;
char c[102][102];
int s=0;
void dfs(int a,int b)
{
if(a>n||a<1||b>m||b<1)
return;
if(c[a][b]=='.')
return;
if(c[a][b]=='W');
{
if (c[a][b+1]!='W' and c[a][b-1]!='W' )
{if (c[a+1][b]!='W' and c[a-1][b]!='W' )
{if (c[a+1][b+1]!='W' and c[a-1][b-1]!='W')
{if (c[a+1][b-1]!='W' and c[a-1][b+1]!='W')
{s++;
}}}}
}
c[a][b]='.';
dfs(a+1,b);
dfs(a,b+1);
dfs(a-1,b);
dfs(a,b-1);
dfs(a+1,b+1);
dfs(a-1,b+1);
dfs(a+1,b-1);
dfs(a-1,b-1);
}
int main()
{
scanf("%d %d",&n ,&m);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>c[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(c[i][j]=='W')
{
dfs(i,j);
}
}
}
cout<<s;
return 0;
}