• Lake Counting-C++


    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.
    Sample Output
    3
    

    CODE:

    #include<bits/stdc++.h>
    using namespace std;
    int cnt=0;
    char a[1010][1010];
    int dir[8][2]={{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};
    bool visited[1010][1010];
    void dfs(int x,int y)
    {
    	visited[x][y]=1;
    	a[x][y]='.';
    	cnt++;
    	for(int i=0;i<8;i++)
    	{
    		int tx=x+dir[i][0];
    		int ty=y+dir[i][1];
    		if(a[tx][ty]=='W')
    		{
    			dfs(tx,ty);
    		}
    	}
    }
    int main()
    {
    	int n,m,ans=0;
    	cin>>n>>m;
    	for(int i=1;i<=n;i++)
    	{
    		for(int j=1;j<=m;j++)
    		{
    			cin>>a[i][j];
    		}
    	}
    	for(int i=1;i<=n;i++)
    	{
    		for(int j=1;j<=m;j++)
    		{
    			if(a[i][j]=='W')
    			{
    				cnt=0;
    				dfs(i,j);
    				ans++;
    			}
    		}
    	}
    	cout<<ans<<endl;
    }
    

    Thanks for reading.

    个人博客地址: www.moyujiang.com 或 moyujiang.top
  • 相关阅读:
    php7 & lua 压测对比
    .NET CORE——Console中使用依赖注入
    EntityFramework Core 自动绑定模型映射
    月末总结与推书
    Dapper连接与事务的简单封装
    EntityFramework Core 学习扫盲
    从输入url到页面返回到底发生了什么
    [译]C#和.NET中的字符串
    利用C#迭代器的一个杨辉三角示例
    用 dotTrace 进行性能分析时,各种不同性能分析选项的含义和用途
  • 原文地址:https://www.cnblogs.com/moyujiang/p/11167736.html
Copyright © 2020-2023  润新知