poj2386水洼dfs

来源:互联网 发布:centos 7 锁屏 编辑:程序博客网 时间:2024/06/05 08:34

#include<stdio.h>  
char a[102][102];
int d[8][2]={-1,-1,-1,0,-1,1,0,-1,0,1,1,-1,1,0,1,1};  //d数组表示方位
int n,m;
void dfs(int x,int y)
{  
    if(a[x][y]=='.' || x<0 || x>=n || y<0 || y>=m) return ;
   for(int i=0;i<8;++i)
   {
    a[x][y]='.';  //把W变成点
    dfs(x+d[i][0],y+d[i][1]); //递归调用
   }
}
void dfs(int x,int y)  //最原始的
{  
    if(a[x][y]=='.' || x<0 || x>=n || y<0 || y>=m) return ;
    a[x][y]='.';
    dfs(x-1,y-1);
    dfs(x-1,y);
    dfs(x-1,y+1);
    dfs(x,y-1);
    dfs(x,y+1);
    dfs(x+1,y-1);
    dfs(x+1,y);
    dfs(x+1,y+1);
}
int main()
{
    int i,j;
    int ans=0;
    scanf("%d%d",&n,&m);
    getchar();
    for(i=0;i<n;++i)
        scanf("%s",a[i]);
    for(i=0;i<n;++i)  //遍历
    {
     for(j=0;j<m;++j)
     {
      if(a[i][j]=='W')
      {
       ans++;
       dfs(i,j);
      }
     }
    }
    printf("%d",ans);
    return 0;
}
              
/*  //测试数据
10 12
W........WW.
.WWW.....WWW
....WW...WW.
.........WW.
.........W..
..W......W..
.W.W.....WW.
W.W.W.....W.
.W.W......W.
..W.......W.
*/


 

0 0
原创粉丝点击