题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1312
此题与油田那题很像是练习深搜的好题,题意是从“@”开始,遍历整个图,找到连接的 “.”有多少个
但要考虑变化,简单处理下就行了,主要是斜角的不要了,而且判断结束方式也不一样
具体看代码吧
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char map[25][25];
int n,m;
int count;
int dir[4][2]={ 0,1, 1,0 ,0,-1,-1,0 };
void dfs(int x,int y)
{
int xx=x;
int yy=y;
map[x][y]='#';
count++;
// map[x][y]='#';
for(int i=0;i<4;i++)
{
xx=x+dir[i][0];
yy=y+dir[i][1];
if(xx<0 || yy<0 || xx>=m || yy>=n || map[xx][yy]=='#')
{
continue;
}
// printf("%d%d^^",xx,yy);
dfs(xx,yy);
}
}
int main()
{
int i,j;
while(scanf("%d%d",&n,&m)!=EOF&&n||m)
{
getchar();
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%c",&map[i][j]);
}
getchar();
}
int x,y;
count=0;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
if(map[i][j]=='@')
{
x=i;y=j;
}
}
dfs(x,y);
printf("%d
",count);
}
}