#include<iostream>
#include<cstring>
#include<stack>
#include<queue>
#define MAX 101
using namespace std;
int ans1,ans2,ans3;
char a[MAX][MAX];
int dfs1(int x,int y){
a[x][y]='1';
if(a[x+1][y]=='#') dfs1(x+1,y);
if(a[x-1][y]=='#') dfs1(x-1,y);
if(a[x][y+1]=='#') dfs1(x,y+1);
if(a[x][y-1]=='#') dfs1(x,y-1);
return ans1;
}
int dfs2(int x,int y){
a[x][y]='2';
if(a[x+1][y]=='@') dfs2(x+1,y);
if(a[x-1][y]=='@') dfs2(x-1,y);
if(a[x][y+1]=='@') dfs2(x,y+1);
if(a[x][y-1]=='@') dfs2(x,y-1);
return ans2;
}
int dfs3(int x,int y){
a[x][y]='3';
if(a[x+1][y]=='*') dfs3(x+1,y);
if(a[x-1][y]=='*') dfs3(x-1,y);
if(a[x][y+1]=='*') dfs3(x,y+1);
if(a[x][y-1]=='*') dfs3(x,y-1);
return ans3;
}
int main(){
int H,W;
int tx,ty;
int sum;
while(cin>>H>>W&&W&&H){
memset(a,0,sizeof(a));
for(int i=0;i<H;i++){
for(int j=0;j<W;j++){
cin>>a[j][i];
}
}
ans1=0;
ans2=0;
ans3=0;
for(int i=0;i<H;i++){
for(int j=0;j<W;j++){
if(a[j][i]=='#'){
dfs1(j,i);
ans1++;
}
if(a[j][i]=='@'){
dfs2(j,i);
ans2++;
}
if(a[j][i]=='*'){
dfs3(j,i);
ans3++;
}
}
}
cout<<ans1+ans2+ans3<<endl;
}
return 0;
}
Aizu-0118 Property Distribution(深搜)
最新推荐文章于 2020-10-06 21:03:05 发布