poj 2386 Lake Counting

来源:互联网 发布:17173dnf装备数据库 编辑:程序博客网 时间:2024/05/02 02:50
dfs 水题,给定的矩阵水池的分布,相邻8的方向的水池合并在一起看做一个水池,求一共有多少个水池。
#include<stdio.h>#include<string.h>#include<iostream>using namespace std;char map[110][110];int vis[110][110];int m,n,sum;int dirx[8]={0,0,1,-1,1,-1,1,-1};int diry[8]={1,-1,0,0,1,-1,-1,1};void dfs(int a,int b){     vis[a][b]=1;     for(int i=0;i<8;i++)     {        int x=a+dirx[i];        int y=b+diry[i];        if(0<x&&x<=m&&0<y&&y<=n&&map[x][y]=='W')        {             if(vis[x][y]==0)   dfs(x,y);        }                  }}        int main(){    while(scanf("%d%d",&m,&n)!=EOF)    {       if(m==0&&n==0) break;       sum=0;       getchar();       memset(vis,0,sizeof(vis));       for(int i=1;i<=m;i++)       {          for(int j=1;j<=n;j++)             scanf("%c",&map[i][j]);          getchar();       }       for(int i=1;i<=m;i++)         for(int j=1;j<=n;j++)         {            if(vis[i][j]==0&&map[i][j]=='W')            {              dfs(i,j);              sum++;             }            }       printf("%d\n",sum);    }    return 0;}

原创粉丝点击