题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1241
明显的深搜题目
#include <stdio.h>
int m,n;
char map[101][101];
// 右 右下 下 左下 左 左上 上 右上
int next[8][2] = {{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}};//方向
void DFS(int x, int y)
{
int k;
int tx,ty;
map[x][y] = '*';//将当前坐标标记
for(k = 0; k < 8; ++k)
{
tx = x + next[k][0];
ty = y + next[k][1];
if(tx <1 || ty < 1 || tx > m || ty > n)//判断边界
continue;
if(map[tx][ty] == '@')//判断当前点是否是油田
DFS(tx,ty);//深搜
}
return ;
}
int main()
{
int i,j,time;
while(scanf("%d %d",&m,&n) && (m+n) != 0)
{
time = 0;
for(i = 1; i <= m; ++i)
for(j = 1; j <= n; ++j)//输入地图
scanf(" %c",&map[i][j]);
for(i = 1; i <= m; ++i)
for(j = 1; j <= n; ++j)
if(map[i][j] != '*')
{
++time;
DFS(i,j);
}
printf("%d\n",time);
}
return 0;
}