zoukankan      html  css  js  c++  java
  • Lake Counting

    最基本的DFS

    Lake Counting

    Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other)
    Total Submission(s) : 10   Accepted Submission(s) : 3
    Problem 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 12W........WW..WWW.....WWW....WW...WW..........WW..........W....W......W...W.W.....WW.W.W.W.....W..W.W......W...W.......W.
     

    Sample Output
    3
     

    Source
    PKU
     


    #include <iostream>
    #include <cstring>

    using namespace std;

    char map[102][102];
    int ans=0;

    int dfs(int x,int y)
    {
        if(map[x][y]=='W')
        {
            map[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);

            return 1;

        }
        else return 0;
    }


    int main()
    {
        
        int m,n;
        int i,j;
        cin>>m>>n;
        ans=0;
        memset(map,'.',sizeof(map));
        for(i=1;i<=m;i++)
            for(j=1;j<=n;j++)
            {
                cin>>map[j];
            }


        for(i=1;i<=m;i++)
            for(j=1;j<=n;j++)
            {
                if(dfs(i,j))
                    ans++;
            }

    //    cout<<dfs(1,1)<<endl;

        cout<<ans;


        return 0;
    }
  • 相关阅读:
    SAP CRM 开发学习资料和教程整理【不定时更新】
    HANA CDS与ABAP CDS
    在CDS(Core Data Services)中使用DCL(Data Control Language)
    SAP中的ALE, IDOC
    ABAP 中JSON格式的转换与解析
    ABAP 在被访问的程序中获取访问程序的全局变量
    这不是我想要的ABAP开发者
    Macvlan技术
    Dockerfile
    css之position
  • 原文地址:https://www.cnblogs.com/CKboss/p/3351105.html
Copyright © 2011-2022 走看看