poj2386 Lake Counting(简单DFS)

poj2386 Lake Counting(简单DFS)

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

转载请注明出处:题目链接:http://poj.org/problem?id=1562

----------------------------------------------------------------------------------------------------------------------------------------------------------
欢迎光临天资小屋害羞害羞害羞害羞:http://user.qzone.qq.com/593830943/main

----------------------------------------------------------------------------------------------------------------------------------------------------------


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>
#include <algorithm>
using namespace std;
#include <cstring>
#define TM 100+17
int N, M;
char map[TM][TM];
bool vis[TM][TM];
int xx[8]={0,1,1,1,0,-1,-1,-1};
int yy[8]={1,1,0,-1,-1,-1,0,1};
void DFS(int x, int y)
{
	vis[x][y] = true;
	for(int i = 0; i < 8; i++)
	{
		int dx = x+xx[i];
		int dy = y+yy[i];
		if(dx>=0&&dx<N&&dy>=0&&dy<M&&!vis[dx][dy]&&map[dx][dy] == 'W')
		{
			vis[dx][dy] = true;
			DFS(dx,dy);
		}
	}
}
int main()
{
	int i, j;
	while(cin>>N>>M)
	{
		int count = 0;
		memset(vis,false,sizeof(vis));
		for(i = 0; i< N; i++)
		{
			cin>>map[i];
		}
		for(i = 0; i < N; i++)
		{
			for(j = 0; j < M; j++)
			{
				if(map[i][j] == 'W' && !vis[i][j])
				{
					count++;
					DFS(i,j);
				}
			}
		}
		cout<<count<<endl;
	}
	return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117525.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 服务器系统详细安装步骤图_服务器系统安装教程详细步骤

    服务器系统详细安装步骤图_服务器系统安装教程详细步骤一、首先按住ctrl+alt+delete进行对KVM的重启操作,在进行重启的过程中按F2,进入BIOS界面,对RAID进行磁盘阵列:1、选择DeviceSetting,进入界面后选择RAIDControllerinSlot4:进行操作。2、先选择VirtualDiskManagement命令,查看系统是否已经进行了磁盘阵列。(如果已经存在进行步骤3,如果未存在进行步骤4)3、按Esc返回上一级,选择ConfigurationManagem…

    2022年9月28日
  • idea2021永久激活注册码-激活码分享

    (idea2021永久激活注册码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月28日
  • pycharm入门教程(非常详细)_pipe使用教程

    pycharm入门教程(非常详细)_pipe使用教程1、汉化:把resources_zh.jar(自行下载)拷贝到PyCharm的安装目录下的lib目录,重启Pycharm即可。2、整体结构:3、常用功能介绍:(1)如何更换Python解释器:在文件->设置->项目:xxx下找到ProjectInterpreter。然后修改为你需要的Python解释器。注意这个地方一定要注意的是:在选择Python解释器的…

    2022年8月25日
  • 2022年最新前端面试题(大前端时代来临卷起来吧小伙子们..持续维护走到哪记到哪)[通俗易懂]

    2022年最新前端面试题(大前端时代来临卷起来吧小伙子们..持续维护走到哪记到哪)[通俗易懂]2022年最新前端面试题热门题目(面经最全版)(蛋糕)…持续维护中,HTML和Css部分vue部分,Null,undefined,Boolean,Number,String,BigInt、BigInt、Object、1.**解构赋值、扩展运算符、class类、模块化importexport、箭头函数、generator函数、promiseletcosnt

    2022年5月4日
  • 递归算法时间复杂度分析[通俗易懂]

    递归算法时间复杂度分析[通俗易懂]递归算法时间复杂度分析时间复杂度:一般情况下,算法中基本操作重复的次数就是问题规模n的某个函数f(n),进而分析f(n)随n的变化情况并确定T(n)的数量级。这里用‘o’来表示数量级,给出算法时间复杂度。T(n)=o(f(n));它表示随问题规模n的增大,算法的执行时间增长率和f(n)增长率成正比,这称作算法的渐进时间复杂度…

    2022年5月14日
  • 图片循环滚动代码详细介绍[通俗易懂]

    图片循环滚动代码详细介绍[通俗易懂]以下是代码片段:                   var rollspeed=10 rolllink2.innerHTML=rolllink1.innerHTML function Marquee(){ if(rolllink2.offsetTop-rolllink.scrollLeftrolllink.scrollLeft-=rolllink1.of

    2022年7月18日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号