dfs

#include "stdio.h"
#include<stdlib.h>

char a[100][100];

int m,n,flag;

void dfs(int x,int y)
{

    if(x<0||x>=m||y<0||y>=n)  return ;
    a[x][y]='E';
    if(a[x][y+1]=='W') dfs(x,y+1);
    else if(a[x+1][y+1]=='W') dfs(x+1,y+1);
    else if(a[x-1][y+1]=='W') dfs(x-1,y+1);
    else if(a[x][y-1]=='W') dfs(x,y-1);
    else if(a[x+1][y-1]=='W') dfs(x+1,y-1);
    else if(a[x-1][y-1]=='W') dfs(x-1,y-1);
    else if(a[x+1][y]=='W') dfs(x+1,y);
    else if(a[x-1][y]=='W') dfs(x-1,y);
    else flag++;
}
int main()
{
    int i,j;
    while(~scanf("%d%d",&m,&n))
    {
        flag=0;
        int x,y;
        for(i=0;i<m;i++)
          for(j=0;j<n;j++)
           scanf("%1s",&a[i][j]);

        for(i=0;i<m;i++)
          for(j=0;j<n;j++)
        if(a[i][j]=='W')  {x=i;y=j;dfs(x,y);}
          //printf("%d  %d\n",x,y);
        printf("%d\n",flag);
    }
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章