//@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 - 廣搜/深搜 基礎
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.