USACO 2004 November
#include <stdio.h>
int N, M;
char field[105][105]; /*宣告庭院*/
void dfs(int x, int y){
field[x][y] = '.';
int dx,dy,nx,ny; /*必須在裡面宣告?*/
for(dx = -1; dx<=1; ++dx){
for(dy = -1; dy<=1; ++dy){
nx = x+dx;
ny = y+dy;
if(nx>=0 && nx < N && ny>=0 && ny<M && field[nx][ny] == 'W')
dfs(nx, ny); /*判斷nx及ny是否在庭院,且判斷是否為積水*/
}
}
return ;
}
int main(){
while(scanf("%d%d", &N, &M)!=EOF){
int i,j;
for(i=0; i<N; ++i)
scanf("%s",&field[i]);
int res = 0;
for(i=0; i<N; ++i){
for(j=0; j<M; j++){
if(field[i][j] == 'W'){
dfs(i,j);
res++;
}
}
}
printf("%d\n", res);
}
}
int N, M;
char field[105][105]; /*宣告庭院*/
void dfs(int x, int y){
field[x][y] = '.';
int dx,dy,nx,ny; /*必須在裡面宣告?*/
for(dx = -1; dx<=1; ++dx){
for(dy = -1; dy<=1; ++dy){
nx = x+dx;
ny = y+dy;
if(nx>=0 && nx < N && ny>=0 && ny<M && field[nx][ny] == 'W')
dfs(nx, ny); /*判斷nx及ny是否在庭院,且判斷是否為積水*/
}
}
return ;
}
int main(){
while(scanf("%d%d", &N, &M)!=EOF){
int i,j;
for(i=0; i<N; ++i)
scanf("%s",&field[i]);
int res = 0;
for(i=0; i<N; ++i){
for(j=0; j<M; j++){
if(field[i][j] == 'W'){
dfs(i,j);
res++;
}
}
}
printf("%d\n", res);
}
}
沒有留言:
發佈留言