Lake Counting(POJ No.2386)

有一个大小为N*M的园子,雨后积起了水。八连通的积水被认为是在一起的。请求出园子里共有多少个水洼?(八连通是指下图中相对w的*部分)

* * *

*w*

* * *

限制条件 N,M ≤ 100

思路:

先遍历整个园子,从任意的w开始,把周围所有的w都变成 '.' ,然后遍历完成之后 res 加1

dfs中的操作就是先把当前位置改为'.',然后再把周围上下左右邻近的8个位置全部遍历一遍找w,找到w就从那个w的位置再开始周围8个位置的寻找,一直到周围的w找完为止

int N = 10;
int M = 12;
char field[10][12] = {
{'w','.','.','.','.','.','.','.','.','w','w','.'},
{'.','w','w','w','.','.','.','.','.','w','w','w'},
{'.','.','.','.','w','w','.','.','.','w','w','.'},
{'.','.','.','.','.','.','.','.','.','w','w','.'},
{'.','.','.','.','.','.','.','.','.','w','.','.'},
{'.','.','w','.','.','.','.','.','.','w','.','.'},
{'.','w','.','w','.','.','.','.','.','w','w','.'},
{'w','.','w','.','w','.','.','.','.','.','w','.'},
{'.','w','.','w','.','.','.','.','.','.','w','.'},
{'.','.','w','.','.','.','.','.','.','.','w','.'},
}; void dfs(int x, int y)
{
field[x][y] = '.';
for (int dx = -1; dx <= 1; dx++)
{
for (int dy = -1; dy <= 1; dy++)
{
int nx = x + dx;
int ny = y + dy;
if (field[nx][ny] == 'w')
{
dfs(nx, ny);
}
}
}
} int solve()
{
int res = 0;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
if (field[i][j] == 'w')
{
dfs(i, j);
res++;
}
}
}
return res;
}

DFS深度优先搜索算法的更多相关文章

  1. [算法总结]DFS(深度优先搜索)

    目录 一.关于DFS 1. 什么是DFS 2. DFS的搜索方式 二.DFS的具体实现 三.剪枝 1. 顺序性剪枝 2. 重复性剪枝 3. 可行性剪枝 4. 最优性剪枝 5. 记忆化剪枝 四.练习 一 ...

  2. 图的深度优先搜索算法DFS

    1.问题描写叙述与理解 深度优先搜索(Depth First Search.DFS)所遵循的策略.如同其名称所云.是在图中尽可能"更深"地进行搜索. 在深度优先搜索中,对最新发现的 ...

  3. 深度优先搜索算法(DFS)以及leetCode的subsets II

    深度优先搜索算法(depth first search),是一个典型的图论算法.所遵循的搜索策略是尽可能“深”地去搜索一个图. 算法思想是: 对于新发现的顶点v,如果它有以点v为起点的未探测的边,则沿 ...

  4. 深度优先搜索算法(Depth-First-Search,DFS)

    深度优先搜索算法的概念 与广度优先搜索算法不同,深度优先搜索算法类似与树的先序遍历.这种搜索算法所遵循的搜索策略是尽可能"深"地搜索一个图.它的基本思想如下:首先访问图中某一个起始 ...

  5. Python数据结构与算法之图的广度优先与深度优先搜索算法示例

    本文实例讲述了Python数据结构与算法之图的广度优先与深度优先搜索算法.分享给大家供大家参考,具体如下: 根据维基百科的伪代码实现: 广度优先BFS: 使用队列,集合 标记初始结点已被发现,放入队列 ...

  6. HDU 1241 Oil Deposits DFS(深度优先搜索) 和 BFS(广度优先搜索)

    Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  7. HDU 4707 Pet(DFS(深度优先搜索)+BFS(广度优先搜索))

    Pet Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissio ...

  8. 回溯算法 DFS深度优先搜索 (递归与非递归实现)

    回溯法是一种选优搜索法(试探法),被称为通用的解题方法,这种方法适用于解一些组合数相当大的问题.通过剪枝(约束+限界)可以大幅减少解决问题的计算量(搜索量). 基本思想 将n元问题P的状态空间E表示成 ...

  9. (原创)不过如此的 DFS 深度优先遍历

    DFS 深度优先遍历 DFS算法用于遍历图结构,旨在遍历每一个结点,顾名思义,这种方法把遍历的重点放在深度上,什么意思呢?就是在访问过的结点做标记的前提下,一条路走到天黑,我们都知道当每一个结点都有很 ...

随机推荐

  1. fabric1.4 网络操作

    建立第一个网络 进入对应目录 $ cd fabric-samples/first-network 在first-network目录下有两个自动化脚本byfn.sh和eyfn.sh, 这两个脚本的启动顺 ...

  2. 单元测试unittest(基于数据驱动的框架:unittest+HTMLTestRunner/BeautifulReport+yaml+ddt)

    一.定义 unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果 ...

  3. Java 的各种内部类、Lambda表达式

    内部类 内部类是指在一个外部类的内部再定义一个类.内部类的出现,再次打破了Java单继承的局限性. 内部类可以是静态 static 的,也可用 public,default,protected 和 p ...

  4. 如何编写一个简单的Linux驱动(二)——完善设备驱动

    前期知识 1.如何编写一个简单的Linux驱动(一)——驱动的基本框架 2.如何编写一个简单的Linux驱动(二)——设备操作集file_operations 前言 在上一篇文章中,我们编写设备驱动遇 ...

  5. SDWebImageInfo

    SDWebImage 简介 iOS中著名的牛逼的网络图片处理框架 包含的功能:图片下载.图片缓存.下载进度监听.gif处理等等 用法极其简单,功能十分强大,大大提高了网络图片的处理效率 国内超过90% ...

  6. Redis必须会的知识点

    Nosql:非关系型数据库 分表分库 + 水平拆分 + mysql集群: 在Memcached的高速缓存,Mysql主从复制.读写分离的基础上,由于MyISAM使用表锁,高并发Mysql应用开始使用I ...

  7. google protocol buffer——protobuf的问题和改进2

    这一系列文章主要是对protocol buffer这种编码格式的使用方式.特点.使用技巧进行说明,并在原生protobuf的基础上进行扩展和优化,使得它能更好地为我们服务. 在上一篇文章中,我们举例了 ...

  8. 运行时数据区--程序计数器(PC Register)

    程序计数器(PC Register) 这里的计数器(Program Counter Register)并非为广义上所指的物理寄存器,JVM中的PC寄存器(程序计数器)是对物理PC寄存器的一种抽象模拟, ...

  9. ios自动识别电话并变色的问题解决方法

    问题: 在做移动端页面时发现长串数字都被ios系统的手机识别为电话号码,且文字变成很土的蓝色,点击有下划线并弹出提示拨打该电话号码. 解决方法: 1.在head中加上下面这行代码就OK了(仅限于单页面 ...

  10. idea模拟前端向后台请求数据输出响应结果

    tools-httpClient-Test restful web service 通过上述步骤之后出现如下图 1 表示通过哪种方式请求:2 请求数据的地址头部:3 请求数据的除了头部之后的地址:4, ...