Oil Deposits pku 1562 收藏
#include<iostream>
#include<string.h>
using namespace std;
char map[100][100];
int use[100][100];
int n,m,w[8][2]={0,1,1,1,1,0,1,-1,0,-1,-1,-1,-1,0,-1,1};/*简单搜索,但起先用if,学到了哈*/
void dfs(int i,int j)
{
for(int k=0;k<8;k++)
{
int a=i+w[k][0];
int b=j+w[k][1];
if(use[a][b]==0&&map[a][b]=='@'&&a<n&&b<m&&a>=0&&b>=0)
{
use[a][b]=1;
dfs(a,b);
}
}
}
int main()
{
while(cin>>n>>m&&n+m!=0)
{
for(int i=0;i<n;i++)
{
cin>>map[i];
}
memset(use,0,sizeof(use));
int count=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(map[i][j]=='@'&&use[i][j]==0)
{
use[i][j]=1;
count++;
dfs(i,j);
}
}
}
cout<<count<<endl;
}
return 0;
}