#include<iostream>
using namespace std;
char area[110][110];
int flag[110][110];
int anext[8][2]={{1,1},{1,0},{1,-1},{-1,1},{-1,0},{-1,-1},{0,1},{0,-1}};
int a,b;
void dfs(int i,int j){
for(int k=0;k<8;k++){
int ii = i+anext[k][0];
int jj = j+anext[k][1];
if(area[ii][jj]=='@'&&ii>=0&&ii<a&&jj>=0&&jj<b&&flag[ii][jj]==0){
flag[ii][jj]=1;
dfs(ii,jj);
}
}
}
int main(){
while(cin>>a>>b&&a!=0&&b!=0){
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
cin>>area[i][j];
flag[i][j]=0;
}
}
int sum =0;
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
if(area[i][j]=='*'){
continue;
}
else{
if(flag[i][j]==0){
sum++;
flag[i][j]=1;
dfs(i,j);
}
}
}
}
cout<<sum<<endl;
}
return 0;
}
hdu1241简单搜索题
最新推荐文章于 2022-11-12 11:21:12 发布