深搜,每搜一次 油田数+1
#include <stdio.h>
#include <stdlib.h>
int map[102][102],r,c;
int dy[]={-1,0,1,-1,1,-1,0,1},dx[]={-1,-1,-1,0,0,1,1,1};
void dfs(int x,int y)
{
int i;
for(i=0;i<8;i++)
if(x+dx[i]>=0&&x+dx[i]<r&&y+dy[i]>=0&&y+dy[i]<c&&map[x+dx[i]][y+dy[i]]) //对应错了x+dx[]与r y+dy[]与c的关系wa了几次。。。。。
{
map[x+dx[i]][y+dy[i]]=0;
dfs(x+dx[i],y+dy[i]);
}
}
int main()
{
int i,j,counter;
char ch;
while(scanf("%d %d",&r,&c)!=EOF&&r)
{
counter=0;
for(i=0;i<r;i++)
for(j=0;j<c;j++)
{
scanf(" %c",&ch);
if(ch=='*') map[i][j]=0;
if(ch=='@') map[i][j]=1;
}
for(i=0;i<r;i++)
for(j=0;j<c;j++)
{
if(map[i][j])
{
map[i][j]=0;
counter++;
dfs(i,j);
}
}
printf("%d\n",counter);
}
return 0;
}