#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
char map[21][21];
bool book[21][21];
int M, N;
int next[4][2] = {{0, -1}, {-1, 0}, {0, 1}, {1, 0}}; //左上右下
int ans;
void dfs(int row, int col){
int rrow, ccol;
if(book[row][col]){
return;
}
book[row][col] = true;
for(int i = 0; i < 4; i++){
rrow = row + next[i][0];
ccol = col + next[i][1];
if(rrow <= N && rrow >= 1 && ccol <= M && ccol >= 1){
if(map[rrow][ccol] == '.' && !book[rrow][ccol]){
ans++;
dfs(rrow, ccol);
}
}
}
}
int main(){
int row, col;
while(scanf("%d %d", &M, &N)!=EOF){
ans = 1;
memset(book, 0, sizeof(book));
if(!M || !N){
return 0;
}
getchar();
for(int i = 1; i <= N; i++){
for(int j = 1; j <= M; j++){
scanf("%c", &map[i][j]);
if(map[i][j] == '@'){
row = i;
col = j;
}
}
getchar();
}
dfs(row, col);
cout << ans << endl;
}
return 0;
}
poj1979 dfs水题
最新推荐文章于 2020-12-22 11:36:28 发布