#include <bits/stdc++.h>
using namespace std;
const int maxn=200;
int n,m;
int dis[8][2]={-1,1,-1,-1,1,-1,1,1,0,-1,0,1,1,0,-1,0};
char s[maxn][maxn];
bool vis[maxn][maxn];
template<class T> T read()
{
T f=1,k=0;
char c=getchar();
while(c<'0' || c>'9')
{
if(c=='-') f=-1;
c=getchar();
}
while(c>='0' && c<='9')
{
k=k*10+c-'0';
c=getchar();
}
return f*k;
}
void dfs(int x,int y)
{
s[x][y]='*';
for(int i=0;i<8;i++)
{
int dx=x+dis[i][0];
int dy=y+dis[i][1];
if(dx>=0 && dx<n && dy>=0 && dy<m && s[dx][dy]=='@') dfs(dx,dy);
}
}
int main()
{
while(cin>>n>>m && m)
{
memset(vis,0,sizeof(vis));
for(int i=0;i<n;i++)
for(int j=0;j<m;j++) cin>>s[i][j];
int res=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(s[i][j]=='@')
{
res++;
dfs(i,j);
}
}
}
cout<<res<<endl;
}
return 0;
}
寒假算法训练5-D(找油矿,直接dfs就行)
最新推荐文章于 2022-05-10 11:35:06 发布