zoukankan      html  css  js  c++  java
  • Lake Counting(dfs)

    Description
    Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 100; 1 <= M <= 100) squares. 

    Each square contains either water ('W') or dry land ('.'). Farmer John would like to figure out how many ponds have formed in his field. 

    A pond is a connected set of squares with water in them, where a square is considered adjacent to all eight of its neighbors. 


    Given a diagram of Farmer John's field, determine how many ponds he has.
    Input
    * Line 1: Two space-separated integers: N and M 


    * Lines 2..N+1: M characters per line representing one row of Farmer John's field. Each character is either 'W' or '.'. 

    The characters do not have spaces between them.
    Output
    * Line 1: The number of ponds in Farmer John's field.
    Sample Input
    10 12
    W........WW.
    .WWW.....WWW
     ....WW...WW.
     .........WW.
     .........W..
     ..W......W..
     .W.W.....WW.
     W.W.W.....W.
     .W.W......W.
     ..W.......W.

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    char a[100][100];
    int m=0,n=0;
    int ad(int x,int y)
    {
        a[x][y]='.';
        for(int i=-1; i<2; i++)
            for(int j=-1; j<2; j++)
                if(a[x+i][y+j]=='W'&&x+i>=0&&x+i<n&&y+j>=0&&y+j<m)
                    ad(x+i,y+j);
    }
    
    int main()
    {
        int ans=0;
        scanf("%d%d",&n,&m);
        getchar();
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<m; j++)
                scanf("%c",&a[i][j]);
                getchar();
        }
    
        for(int i=0; i<n; i++)
            for(int j=0; j<m; j++)
                if(a[i][j]=='W')
                {
                    ad(i,j);
                    ans++;
                }
        printf("%d
    ",ans);
        return 0;
    }


    Sample Output
    3





  • 相关阅读:
    mysql查询缓存
    Mysql 通过binlog日志恢复数据
    mysqlbinlog命令详解
    修改vsftpd默认端口21
    centos 卸载vsftpd方法
    linux挂载u盘和卸载
    Linux下搭建FTP服务器
    fastjson SerializerFeature详解
    Spring JPA使用CriteriaBuilder动态构造查询
    jdk之jps的用法
  • 原文地址:https://www.cnblogs.com/chinashenkai/p/9451415.html
Copyright © 2011-2022 走看看