Test

#include 
#include <string.h>
#define N 51
char w[N][N];//棋盘 

int mark[N][N];//判断是否遍历过 

int n,numW,numB,num,u,v,d;

int go[][2]={1,0,-1,0,0,1,0,-1}; //检查方向 

void DFS(int x,int y){//深度优先搜索 
    num++;
    mark[x][y] = 1;
    for(int i = 0;i < 4;i++){
        u = x + go[i][0];
        v = y + go[i][1];
        if(!mark[u][v] && w[u][v] == 'E')
            DFS(u,v);
    }
    return;
}
int main(){
    scanf("%d %d",&n,&d);
    getchar();
    for(int i = 1;i <= n;i++){
        for(int j = 1;j <= n;j++)
        scanf("%c",&w[i][j]);
        getchar();
    }
    num = 0;
    for(int i = 1;i <= n;i++)
    for(int j = 1;j <= n;j++){
        if(w[i][j] == 'B' && !mark[i][j])
            DFS(i,j);
    }
    numB=num-d;
    num =0 ;
    memset(mark,0,sizeof(mark));
    for(int i = 1;i <= n;i++)
    for(int j = 1;j <= n;j++){
        if(w[i][j] == 'W' && !mark[i][j])
            DFS(i,j);
    }
    numW=num+d;
    printf("%d\n",numB-numW);
}
View Code

 

你可能感兴趣的:(Test)