描述
自从玉树受灾以来,有关部门一直在现场抢救落难的人。他们用个种方法搜救,用上了搜救犬,有了搜救犬找到生命迹象就容易了。
假设现场用一个矩阵表示,抢救的有多条搜救犬,受灾的人也有多个可能。
例子:
#p.d#p#
#####.#
d……..#
######p
d表示搜救狗,p表示受灾的人,点表示可以通行的路,#表示石头挡住的路,不能通行。
搜救狗只能上下左右走,不能越过障碍物。
上面的那个例子最多可以救到2个人。因为第三个人被四周包围搜救狗无法到达。
输入
输入数据有多组。每组两个整数R,C, 2=
#include<stdio.h>
int dir[4][2]={{0,1},{0,-1},{-1,0},{1,0}},r,c,count=0;
char map[101][101];
void dfs(int x,int y)
{
if(map[x][y]=='#'||x<0||x>=r||y<0||y>=c)
return;
if(map[x][y]=='p')
count++;
map[x][y]='#';
int i;
for(i=0;i<4;i++)
dfs(x+dir[i][0],y+dir[i][1]);
}
int main()
{
int i,j;
while(scanf("%d %d",&r,&c),r||c)
{
count=0;
for(i=0;i<r;i++)
scanf("%s",map[i]);
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
if(map[i][j]=='d')
dfs(i,j);
}
}
printf("%d\n",count);
}
return 0;
}