//@author:yzj Date:2015/07/25
//sourse:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=824
//meaning:找出最多可以到达的'.'
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
const int MAXN = 25;
int w, h;
char c[MAXN][MAXN];
int sx, sy, cnt;
int dx[4]={-1, 0, 1, 0};
int dy[4]={0, 1, 0, -1};
void dfs(int x, int y)
{
cnt++;
c[x][y]='#';
for(int i = 0; i < 4; i++)
{
int nx = x+dx[i], ny = y+dy[i];
//这里其实nx代表行,最多有h行,ny代表队的是列,最多有w列,不要搞混了
if(0<=nx&&nx<h&&0<=ny&&ny<w&&c[nx][ny]=='.')
{
dfs(nx, ny);
}
}
}
int main()
{
、、freopen("i:/yzj/cppCode/input.txt", "r", stdin);
while(scanf("%d %d", &w, &h) && (w && h))
{
getchar();
cnt = 0;
for(int i = 0; i < h; i++)//i是行 x
{
for(int j = 0; j < w; j++)//j是列 y
{
scanf("%c", &c[i][j]);
if(c[i][j]=='@')
{
sx = i, sy = j;
}
}
getchar();
}
// for(int i = 0; i < h; i++)
// {
// for(int j = 0; j < w; j++)
// {
// cout << c[i][j];
// }
// cout << endl;
// }
dfs(sx, sy);
printf("%d\n", cnt);
}
return 0;
}
POJ 1979---B - 广搜/深搜 基础
最新推荐文章于 2020-02-29 11:09:51 发布