#include<stdio.h>
#include<string.h>
int m,n,sum;
char map[102][102];
int dir[8][2]= {0,1,0,-1,1,0,-1,0,-1,-1,1,1,-1,1,1,-1};
void dfs(int i,int j)
{
for(int s=0; s<8; s++)
{
int di=i+dir[s][0];
int dj=j+dir[s][1];
if(di<0||dj<0||di>=m||dj>=n||map[di][dj]=='*')
continue;
map[di][dj]='*';
dfs(di,dj);
}
}
int main()
{
while(~scanf("%d%d",&m,&n))
{
sum=0;
for(int i=0; i<m; i++)
scanf("%s",map[i]);
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
if(map[i][j]=='@')
{
map[i][j]='*';
dfs(i,j);
sum++;
}
printf("%d\n",sum);
}
return 0;
}
dfs算法经典例题 Oil Deposits
最新推荐文章于 2022-07-14 11:56:20 发布