2014年8月13日星期三

[POJ] 2386 - Lack Counting

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);
    }
}

沒有留言: