//3_2_1: Red and Black 到达黑色瓷砖数量 POJ1979 ZOJ2165
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int i,j,mx,my,sx,sy,cnt,dir[4][2] = {{-1,0},{0,1},{1,0},{0,-1}};
char enter,map[22][22];
void DFS(int x,int y)
{
int k,xx,yy;
cnt ++;
map[x][y] = '#';
for(k = 0;k < 4;k ++)
{
xx = x + dir[k][0];
yy = y + dir[k][1];
if(xx < 0 || xx >= mx || yy < 0 || yy >= my) continue;
if(map[xx][yy] == '.') DFS(xx,yy);
}
}
int main()
{
while(1)
{
scanf("%d%d%c",&my,&mx,&enter);
if(mx == 0 || my == 0) break;
for(i = 0;i < mx;i ++)
{
for(j = 0;j < my;j ++)
{
scanf("%c",&map[i][j]);
if(map[i][j] == '@')
{
sx = i;
sy = j;
}
}
scanf("%c",&enter);
}
cnt = 0;
DFS(sx,sy);
printf("%d\n",cnt);
}
return 0;
}
/*测试结果:通过POJ1979 ZOJ2165检测
6 9
....#.
.....#
......
......
......
......
......
#@...#
.#..#.
45
11 9
.#.........
.#.#######.
.#.#.....#.
.#.#.###.#.
.#.#..@#.#.
.#.#####.#.
.#.......#.
.#########.
...........
59
11 6
..#..#..#..
..#..#..#..
..#..#..###
..#..#..#@.
..#..#..#..
..#..#..#..
6
7 7
..#.#..
..#.#..
###.###
...@...
###.###
..#.#..
..#.#..
13
0 0
请按任意键继续. . .
*/
POJ1979 ZOJ2165 Red and Black
最新推荐文章于 2018-11-30 15:56:17 发布