题意就是找出有多少块有石油的区域,就是数组中的@,这边相邻指的是是周围的八个位置。
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
using namespace std;
int t, n, m, cont, sx, sy;
int xm[8]={-1,0,1,-1,1,-1,0,1};
int ym[8]={-1,-1,-1,0,0,1,1,1};
char maze[110][110];
void dfs(int x, int y)
{
int tx, ty,i;
for(i=0;i<8;i++)
{
tx=x+xm[i];
ty=y+ym[i];
if(tx<0||ty<0||tx>=m||ty>=n||maze[tx][ty]=='*')
continue;
maze[tx][ty]='*';
dfs(tx,ty);
}
return;
}
int main()
{
while(scanf("%d%d",&m,&n)!=EOF&&m)
{
cont=0;
for(int i=0;i<m;i++)
scanf("%s",maze[i]);
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
{
if(maze[i][j]=='@')
{
maze[i][j]='*';
cont++;dfs(i,j);
}
}
printf("%d\n",cont);
}
return 0;
}