题目描述:有一个大小为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)的更多相关文章

  1. 深度搜索DFS-Lake Counting(POJ NO.2386)

    题目链接POJ NO.2386 解题思路: 这个也是一个dfs 的应用,在书上的例子,因为书上的代码并不全,基本都是函数分块来写,通过这个题目也规范了代码,以后能用函数的就都用函数来实现吧.采用深度优 ...

  2. POJ 2386 Lake Counting(搜索联通块)

    Lake Counting Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 48370 Accepted: 23775 Descr ...

  3. DFS:Lake Counting(POJ 2386)

    好吧前几天一直没更新博客,主要是更新博客的确是要耗费一点精力 北大教你数水坑 最近更新博客可能就是一点旧的东西和一些水题,主要是最近对汇编感兴趣了嘻嘻嘻 这一题挺简单的,没什么难度,简单深搜 #inc ...

  4. POJ 2386 Lake Counting (简单深搜)

    Description Due to recent rains, water has pooled in various places in Farmer John's field, which is ...

  5. POJ:2386 Lake Counting(dfs)

    Lake Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 40370   Accepted: 20015 D ...

  6. POJ 2386 Lake Counting(深搜)

    Lake Counting Time Limit: 1000MS     Memory Limit: 65536K Total Submissions: 17917     Accepted: 906 ...

  7. poj 2386:Lake Counting(简单DFS深搜)

    Lake Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18201   Accepted: 9192 De ...

  8. 【POJ - 2386】Lake Counting (dfs+染色)

    -->Lake Counting 直接上中文了 Descriptions: 由于近日阴雨连天,约翰的农场中中积水汇聚成一个个不同的池塘,农场可以用 N x M (1 <= N <= ...

  9. POJ_2386 Lake Counting (dfs 错了一个负号找了一上午)

    来之不易的2017第一发ac http://poj.org/problem?id=2386 Lake Counting Time Limit: 1000MS   Memory Limit: 65536 ...

随机推荐

  1. [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 ...

  2. ACG记录整理

    资料来源 日文维基百科 bangumi番组计划 中文维基百科 百度百科 豆瓣电影 资料类型 テレビアニメ‎ OVA‎ アニメ映画‎ Webアニメ‎ 内容说明 番名,带超链接介绍,尽量选用国内网站介绍, ...

  3. HDU1556 Color the ball [线段树模板]

    题意:区间修改序列值,最后输出. //hdu1166 #include<iostream> #include<cstdio> #include<cstring> # ...

  4. svn安装使用1(转载)

    SVN服务器搭建和使用(一) Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上 ...

  5. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-模拟接口响应数据(18)

    这里是把传入的请求数据作为响应值返回 # -*- coding: utf-8 -*- # @Time : 2020/2/15 9:47 # @File : do_mock_18.py # @Autho ...

  6. SHELL小练习

    1.SHELL编程服务器IP修改脚本 脚本实现动态IP修改: 脚本实现静态IP修改: 实现IP地址输入判断正确性: IP地址修改成功判断&回滚: 2.SHELL编程Tomcat多实例管理脚本( ...

  7. Docker跨主机容器之间的通信macvlan

    找两台测试机: [root@docker1 centos_zabbix]# docker network ls NETWORK ID NAME DRIVER SCOPE 19ac9a55bedb br ...

  8. 为什么有这么多人呼吁要取代Facebook?

    扎克伯格这段时间算是栽了,身为人生大赢家的他或许正在遭受最为灰暗的时刻.因为泄露5000万用户数据这一事件,Facebook股价暴跌且扎克伯格身家缩水.被英国与美国相关部门调查.#删除Facebook ...

  9. 吴裕雄--天生自然 R语言开发学习:使用ggplot2进行高级绘图(续二)

    #----------------------------------------------------------# # R in Action (2nd ed): Chapter 19 # # ...

  10. Memcached笔记——(二)XMemcached&Spring集成

    今天研究Memcached的Java的Client,使用XMemcached 1.3.5,做个简单的测试,并介绍如何与Spring集成. 相关链接: Memcached笔记--(一)安装&常规 ...