2018-1-23
直接使用广搜求解即可,注意这里的题目:九方格里面的都可以视为同一区域的即
可。。。
#include<iostream>
#include<cstring>
using namespace std;
const int MAX=100;
char x[MAX+1][MAX+1];
bool f[MAX+1][MAX+1];
int n,m;
bool isvaild(int p,int q){
if (p<0||p>=n||q<0||q>=m) return false;
return true;
}
void dfs(int p,int q){
for (int i=-1;i<=1;i++){
for (int j=-1;j<=1;j++){
int a=i+p;
int b=j+q;
if (isvaild(a,b)&&!f[a][b]&&x[a][b]=='W'){
f[a][b]=true;
dfs(a,b);
}
}
}
}
int main(){
while (cin>>n>>m){
int res=0;
memset(f,false,sizeof(f));
for (int i=0;i<n;i++){
for (int j=0;j<m;j++){
cin>>x[i][j];
}
}
for (int i=0;i<n;i++){
for (int j=0;j<m;j++){
if (!f[i][j]&&x[i][j]=='W'){
res++;
dfs(i,j);
}
}
}
cout<<res<<endl;
}
return 0;
}