Lake Counting(POJ No.2386)
题目描述:有一个大小为N*M的园子,八连通的积水被认为是连接在一起的。请求出园子里总共有多少水洼?(八连通指的是下图中相对w的*部分)
***
*w*
***
限制条件
N,M<=100
样例
输入:
N=10,M=12
园子如下图('w'表示积水,'.'表示没有积水)
w . . . . . . . . ww .
. www . . . . www
. . . . ww . . . ww .
. . . . . . . . . . ww .
. . . . . . . . . . w . .
. . w . . . . . . . w . .
. w . w . . . . . ww .
w . w . w . . . . . w .
. w . w . . . . . . w .
. . w . . . . . . . . w .
输出
3
分析: 从图上可以直观的看出有三个连通块。从任意的w开始,不停的把邻接的部分用’ . '代替。1次dfs后 与初始的这个w连接的所有w就都被替换成了' . ',因此直到图中不再存在w为止,总共进行dfs的次数就是答案了。
#include<iostream>
using namespace std; #define MAX_N 101 int N,M;
int x1,x2,y1,y2;
char field[MAX_N][MAX_N+]; void dfs(int x,int y)//x,y为现在位置
{
field[x][y]='.';//将现在位置替换为'.'
x1=x-; x2=x+;
y1=y-; y2=y+; //向八个方向搜索
if(x1>= && field[x1][y]=='w') dfs(x1,y);
if(x2<N && field[x2][y]=='w') dfs(x2,y);
if(y1>= && field[x][y1]=='w') dfs(x,y1);
if(y2<M && field[x][y2]=='w') dfs(x,y2);
if(x1>=&&y1>=&&field[x1][y1]=='w') dfs(x1,y1);
if(x1>=&&y2<M&&field[x1][y2]=='w') dfs(x1,y2);
if(x2<N&&y1>=&&field[x2][y1]=='w') dfs(x2,y1);
if(x2<N&&y2<M&&field[x2][y2]=='w') dfs(x2,y2); return;
} int main()
{
cin>>N>>M;
for(int i=; i<N; i++){
for(int j=; j<M; j++)
{
cin>>field[i][j];
}
}
int res=;
for(int i=; i<N; i++){
for(int j=; j<M; j++){
if(field[i][j]=='w'){
dfs(i,j);
res++;
}
}
}
cout<<res;
return ;
}
其中函数dfs还有另一种写法
void dfs(int x,int y){
//将现在所在位置替换为.
field[x][y]='.';
//循环遍历移动的8个方向
for(int dx=-1;dx<=1; dx++){
for(int dy=-1; dy<1; dy++){
int nx=x+dx,ny=y+dy;
if(0<=nx && nx<N && 0<=ny && ny<M && field[nx][ny]=='w')
{
dfs(nx,ny);
}
}
}
return ;
}
Lake Counting(POJ No.2386)的更多相关文章
- 深度搜索DFS-Lake Counting(POJ NO.2386)
题目链接POJ NO.2386 解题思路: 这个也是一个dfs 的应用,在书上的例子,因为书上的代码并不全,基本都是函数分块来写,通过这个题目也规范了代码,以后能用函数的就都用函数来实现吧.采用深度优 ...
- POJ 2386 Lake Counting(搜索联通块)
Lake Counting Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 48370 Accepted: 23775 Descr ...
- DFS:Lake Counting(POJ 2386)
好吧前几天一直没更新博客,主要是更新博客的确是要耗费一点精力 北大教你数水坑 最近更新博客可能就是一点旧的东西和一些水题,主要是最近对汇编感兴趣了嘻嘻嘻 这一题挺简单的,没什么难度,简单深搜 #inc ...
- POJ 2386 Lake Counting (简单深搜)
Description Due to recent rains, water has pooled in various places in Farmer John's field, which is ...
- POJ:2386 Lake Counting(dfs)
Lake Counting Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 40370 Accepted: 20015 D ...
- POJ 2386 Lake Counting(深搜)
Lake Counting Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 17917 Accepted: 906 ...
- poj 2386:Lake Counting(简单DFS深搜)
Lake Counting Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18201 Accepted: 9192 De ...
- 【POJ - 2386】Lake Counting (dfs+染色)
-->Lake Counting 直接上中文了 Descriptions: 由于近日阴雨连天,约翰的农场中中积水汇聚成一个个不同的池塘,农场可以用 N x M (1 <= N <= ...
- POJ_2386 Lake Counting (dfs 错了一个负号找了一上午)
来之不易的2017第一发ac http://poj.org/problem?id=2386 Lake Counting Time Limit: 1000MS Memory Limit: 65536 ...
随机推荐
- [LC] 298. Binary Tree Longest Consecutive Sequence
Given a binary tree, find the length of the longest consecutive sequence path. The path refers to an ...
- ACG记录整理
资料来源 日文维基百科 bangumi番组计划 中文维基百科 百度百科 豆瓣电影 资料类型 テレビアニメ OVA アニメ映画 Webアニメ 内容说明 番名,带超链接介绍,尽量选用国内网站介绍, ...
- HDU1556 Color the ball [线段树模板]
题意:区间修改序列值,最后输出. //hdu1166 #include<iostream> #include<cstdio> #include<cstring> # ...
- svn安装使用1(转载)
SVN服务器搭建和使用(一) Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上 ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-模拟接口响应数据(18)
这里是把传入的请求数据作为响应值返回 # -*- coding: utf-8 -*- # @Time : 2020/2/15 9:47 # @File : do_mock_18.py # @Autho ...
- SHELL小练习
1.SHELL编程服务器IP修改脚本 脚本实现动态IP修改: 脚本实现静态IP修改: 实现IP地址输入判断正确性: IP地址修改成功判断&回滚: 2.SHELL编程Tomcat多实例管理脚本( ...
- Docker跨主机容器之间的通信macvlan
找两台测试机: [root@docker1 centos_zabbix]# docker network ls NETWORK ID NAME DRIVER SCOPE 19ac9a55bedb br ...
- 为什么有这么多人呼吁要取代Facebook?
扎克伯格这段时间算是栽了,身为人生大赢家的他或许正在遭受最为灰暗的时刻.因为泄露5000万用户数据这一事件,Facebook股价暴跌且扎克伯格身家缩水.被英国与美国相关部门调查.#删除Facebook ...
- 吴裕雄--天生自然 R语言开发学习:使用ggplot2进行高级绘图(续二)
#----------------------------------------------------------# # R in Action (2nd ed): Chapter 19 # # ...
- Memcached笔记——(二)XMemcached&Spring集成
今天研究Memcached的Java的Client,使用XMemcached 1.3.5,做个简单的测试,并介绍如何与Spring集成. 相关链接: Memcached笔记--(一)安装&常规 ...