• Lake Counting (POJ


    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
    #include <iostream>
    using namespace std;
    
    char Map[110][110];
    bool vis[110][110];
    int dir[8][2] = {{1,0},{1,1},{0,1},{1,-1},{-1,0},{-1,-1},{0,-1},{-1,1}};
    int dx, dy;
    int n, m;
    
    int dfs(int x, int y)
    {
    	if(x < 0 || x >= n || y < 0 || y >= m)
    		return 0;
    		
    	for(int i = 0; i < 8; ++ i)
    	{
    		dx = x + dir[i][0];
    		dy = y + dir[i][1];
    		if(Map[dx][dy] == 'W' && !vis[dx][dy])	
    		{
    			vis[dx][dy] = true;
    			dfs(dx, dy);
    		}
    	}
    }
    
    int main()
    {
    	int result = 0;
    	cin >> n >> m;
    	for(int i = 0; i < n; ++ i)
    	{
    		cin >> Map[i];
    	}
    	
    	for(int i = 0; i < n; ++ i)
    	{
    		for(int j = 0; j < m; ++ j)
    		{
    			if(Map[i][j] == 'W' && !vis[i][j])
    			{
    				vis[i][j] = true;
    				dfs(i, j);
    				result ++;
    			}
    		}
    	}
    	cout << result << endl;
    	
    	return 0;
    }
    

      

  • 相关阅读:
    Rigidbody和Collider
    Unity官方实例教程 Roll-a-Ball
    unity还原three之旋转
    unity还原three——顶点,三角面,uv
    unity还原three导出的json——基本模型,位移,旋转,缩放
    【struts2基础】配置详解
    【深入Struts2】获取ServletAPI的三种方式
    JDBC事务与事务隔离级别详解
    【GOF23设计模式】--工厂模式
    【GOF23设计模式】--单例模式
  • 原文地址:https://www.cnblogs.com/mjn1/p/11643416.html
Copyright © 2020-2023  润新知