poj2386Lake Counting
题意是这种。给你一个N*M的矩形图。这个图由两个东西组成。'.'和'W',
W代表这个地方有水。
.代表这个地方没水。
假设一个有水的地方它的上下左右,左上,坐下。右上。右下也有水,那么
就看成它们连成一块,连在一起的有水的地方看成一个水洼。
如今告诉你N和M以及这个矩形图。要你推断图中有多少个水洼。
我是用dfs做的。
详细做法是首先找一个有水的点,然后假设这个地方有水。则水洼数+1,
然后从这个点出发。进行dfs,把与它相连的有水的地方都变成没水的地方,
也就是'.'。这种话,最后得出的水洼数就是题意所要求的。
代码例如以下
#include<iostream>
using namespace std;
int row,line;
char map[110][110];
void init()
{
int i,j;
scanf("%d%d",&row,&line);
for(i=0;i<row;i++)
scanf("%s",map[i]);
}
bool isbeyond(int i,int j)
{
if(i<0||i>=row||j<0||j>=line)
return 1;
return 0;
}
void dfs(int i,int j)
{
int x,y;
map[i][j]='.';
for(x=-1;x<2;x++)
for(y=-1;y<2;y++)
if(!isbeyond(i+x,j+y)&&map[i+x][j+y]=='W')
dfs(i+x,j+y);
}
void solve()
{
int sum=0,i,j;
init();
for(i=0;i<row;i++)
for(j=0;j<line;j++)
if(map[i][j]=='W')
{
sum++;
dfs(i,j);
}
printf("%d\n",sum);
}
int main()
{
solve();
}
poj2386Lake Counting的更多相关文章
- POJ-2386Lake Counting,搜索题。。
Lake Counting Time Limit: 1000MS Memory Limit: 65536K Description Due to recent rains, w ...
- POJ2386----Lake Counting
/* 利用宽搜将每块积水填满,添加一个计数器,记下填满几块积水即答案 */ #include<iostream> using namespace std; ][]; ][] = {{-,- ...
- 萌新笔记——Cardinality Estimation算法学习(二)(Linear Counting算法、最大似然估计(MLE))
在上篇,我了解了基数的基本概念,现在进入Linear Counting算法的学习. 理解颇浅,还请大神指点! http://blog.codinglabs.org/articles/algorithm ...
- POJ_2386 Lake Counting (dfs 错了一个负号找了一上午)
来之不易的2017第一发ac http://poj.org/problem?id=2386 Lake Counting Time Limit: 1000MS Memory Limit: 65536 ...
- ZOJ3944 People Counting ZOJ3939 The Lucky Week (模拟)
ZOJ3944 People Counting ZOJ3939 The Lucky Week 1.PeopleConting 题意:照片上有很多个人,用矩阵里的字符表示.一个人如下: .O. /|\ ...
- find out the neighbouring max D_value by counting sort in stack
#include <stdio.h> #include <malloc.h> #define MAX_STACK 10 ; // define the node of stac ...
- 1004. Counting Leaves (30)
1004. Counting Leaves (30) A family hierarchy is usually presented by a pedigree tree. Your job is ...
- 6.Counting Point Mutations
Problem Figure 2. The Hamming distance between these two strings is 7. Mismatched symbols are colore ...
- 1.Counting DNA Nucleotides
Problem A string is simply an ordered collection of symbols selected from some alphabet and formed i ...
随机推荐
- php中如何开启GD库
php中开启GD库 在浏览器输入启用wamp下的GD库(否则验证码可能不能用) D:\lamp\php\php.ini 文件
- [Oracle] 常用工具集之 - SQL*Loader
SQL*Loader原理 SQL*Loader是Oracle提供的用于数据加载的一种工具,它比较适合业务分析类型数据库(数据仓库),能处理多种格式的平面文件,批量数据装载比传统的数据插入效率更高.其示 ...
- [Android学习]Activity之间传递对象和对象集合
开发过程中,Activity之间传递数据是必不可少的,android中使用Intent和Bundle作为数据载体,在Activity之间传递,对于基础数据类型,Bundle已经提供相关的put,get ...
- CountDownLatch和CyclicBarrier的区别(转)
在网上看到很多人对于CountDownLatch和CyclicBarrier的区别简单理解为CountDownLatch是一次性的,而CyclicBarrier在调用reset之后还可以继续使用.那如 ...
- WPF 设置WebBrowser控件不弹脚本错误提示框
using System.Reflection; using System.Windows; using System.Windows.Controls; using System.Windows.N ...
- [Cocos2d-x]创建项目
从cocos2d-x 2.1.4之后,就不提供工程项目模板的安装文件了,我们只能手工修改以前的安装文件,让它连接最新的工程,但是这样很麻烦. 我们可以使用python命令创建cocos2d-x项目 步 ...
- git使用ssh密钥和https两种认证方式汇总(转)
在版本库的SSH方式和HTTPS方式是不同的,具体来说就是url信息的不同,但是,实际的认证机制也是不同的.当建立了本机密钥之后,使用ssh方式实际上是不需要再次认证的,而https则每次需要输入密码 ...
- 如何在cocos2d项目中enable ARC
如何在cocos2d项目中enable ARC 基本思想就是不支持ARC的代码用和支持ARC的分开,通过xcode中设置编译选项,让支持和不支持ARC的代码共存. cocos2d是ios app开发中 ...
- ABP中动态WebAPI原理解析
ABP中动态WebAPI原理解析 动态WebAPI应该算是ABP中最Magic的功能之一了吧.开发人员无须定义继承自ApiController的类,只须重用Application Service中的类 ...
- c++map按value排序--将map的pair对保存到vector中,然后写比较仿函数+sort完成排序过程。
map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行 ...