#include <stdio.h>
#include <string.h>
#define maxn 21
char map[maxn][maxn];
int result[maxn][maxn];
int w,h;
int main(){
while(scanf("%d %d",&w,&h) && w && h){
memset(result,0,sizeof(result));
for(int i = 0;i < h ; i++){
getchar(); //注意换行号
for(int j = 0; j < w;j++){
scanf("%c",&map[i][j]);
if(map[i][j] == '@')
result[i][j] = 1;
}
}
int ans = 0;
bool flag = true;
while(flag){ //以@为中心向4个方向扩散
flag = false;
for(int i = 0; i < h;i++)
for(int j = 0; j< w;j++){
if (result[i][j] == 1){
if(i > 0 && map[i-1][j] == '.' && result[i-1][j] != 1){
result[i-1][j] = 1;
flag = true;
ans++;
}
if(j > 0 && map[i][j-1] == '.' && result[i][j-1] != 1){
result[i][j-1] = 1;
flag = true;
ans++;
}
if(i < h-1 && map[i+1][j] == '.' && result[i+1][j] != 1){
result[i+1][j] = 1;
flag = true;
ans++;
}
if(j < w-1 && map[i][j+1] == '.' && result[i][j+1] != 1){
result[i][j+1] = 1;
flag = true;
ans++;
}
}
}
}
printf("%d\n",ans+1);
}
return 0;
}
poj 1979 red and black
最新推荐文章于 2013-06-25 21:11:45 发布