解析:

遇到这个题的时候,不太容易快速的想到思路;可能会比较容易想到使用递归的思想;
但是具体怎么写呢?
直接求有几个区域不好求,那么我们换个思路来求,这种题就是这样,直接求不好求,但是当我们转换一下思路之后就豁然开朗;

我们遍历所有的点,当遇到有水的点时,就将它周围的(八个方向)所有的水点都消除;所以在主遍历for循环中遇到几个水点就是有几个水洼;

代码:

#include<iostream>
using namespace std;const int MAX_N = 100;
const int MAX_M = 100;char map[MAX_N][MAX_M];
int n, m;void input_data()
{cout << "input the n: ";cin >> n;cout << "input the m: ";cin >> m;cout << "input the map:" << endl;for (int i = 0; i < n; ++i){for (int j = 0; j < m; ++j){cin >> map[i][j];}}
}void dfs(int x, int y)
{map[x][y] = '.';int tx, ty;for (int i = -1; i <= 1; ++i){for (int j = -1; j <= 1; ++j){tx = x + i;ty = y + j;if (tx >= 0 && tx < n && ty >= 0 && ty < m && map[tx][ty] == 'w'){dfs(tx, ty);}}}return;
}void solve()
{int num = 0;for (int i = 0; i < n; ++i){for (int j = 0; j < m; ++j){if (map[i][j] == 'w'){dfs(i, j);num++;}}}cout << "the num is " << num << endl;
}int main()
{input_data();solve();return 0;
}

此文章转载自:https://www.cnblogs.com/yxk529188712/p/4976017.html

求水洼的问题——深度优先算法相关推荐

  1. LeetCode695题求最大岛屿面积(DFS深度优先算法)

    求最大岛屿面积 No.695 题目描述: 给你一个大小为 m x n 的二进制矩阵 grid . 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的 ...

  2. C语言递归解决水洼问题

    解析: 水洼问题的一个解法就是先找到一个水坑,将它清零,然后遍历它周围将所有水坑清零,直到将这个水洼整体清零,水洼数加一,一直循环直到将所有水洼都清零,其中要注意的一个点就是避免过界. /*水洼问题假 ...

  3. C语言水洼数算法,C++ 数据结构之水洼的数量算法

    C++ 数据结构之水洼的数量算法 题目: 有一个大小为N*M的园子, 雨后起了积水. 八连通的积水被认为是连接在一起的. 请求出园子里总共有多少水洼. 使用深度优先搜索(DFS), 在某一处水洼, 从 ...

  4. 深度优先搜索之水洼的数量

    1. 问题描述: 水洼数目有一个大小为N * M的院子,雨后积起了水, 八连通的积水被认为是连在一起的,请求出园子里面总共有多少水洼(八连通指的是下图中相对w大的*部分) *** *w* *** 限制 ...

  5. C语言水洼数算法,水洼的数量算法 代码(C)

    题目: 有一个大小为N*M的园子, 雨后起了积水. 八连通的积水被认为是连接在一起的. 请求出园子里总共有多少水洼. 使用深度优先搜索(DFS), 在某一处水洼, 从8个方向查找, 直到找到所有连通的 ...

  6. 算法学习--水洼的数量

    深度优先搜索之水洼的数量 原创 蠕动的二哈 最后发布于2018-10-26 17:33:14 阅读数 379 收藏 展开 问题描述: 水洼数目有一个大小为N * M的院子,雨后积起了水, 八连通的积水 ...

  7. <<算法很美>>——(七)——DFS典题(一):水洼数目

    目录 问题描述 问题分析 放码过来 问题描述 有一个大小为N×MN×M N\times MN×M的园子,雨后积起了水.八连通的积水被认为是连接在一起的.请求出园子里总共有多少水洼?八连通指的是下图中相 ...

  8. 算法很美:水洼数(dfs)深搜

    题目描述 Descriptions: 由于近日阴雨连天,约翰的农场中中积水汇聚成一个个不同的池塘,农场可以用 N x M (1 <= N <= 100; 1 <= M <= 1 ...

  9. (造轮子)C 创建队列和图实现广度优先算法(BFS)和深度优先算法(DFS)(数据结构)

    链表.队列和图实现BFS和DFS算法(C+造轮子+详细代码注释) 1.队列的链式存储结构   队列的链式表示称为链队列,它实际上是一个同时带有队头指针和队尾指针的单链表.头指针指向队头节点,尾指针指向 ...

最新文章

  1. 实战Registry和RegistryKey类,一个简单的可疑文件扫描程序
  2. c++经典书籍--深度探索C++对象模型
  3. wincc无法修改服务器名称_WinCC(TIA)组件SIVARC在BA空调及冷热源系统改造项目中的应用...
  4. web java工程的创建_简单JavaWeb工程创建
  5. 转JS总结1--(CSS书写规范和正则表达式)
  6. Vim的NerdTree插件
  7. 带有光纤的可扩展,健壮和标准的Java Web服务
  8. C++项目參考解答:累加求圆周率
  9. 运维与节能:数据中心绿色运维技术研讨会召开
  10. springboot templates读取不到_精通 Spring Boot 系列 04
  11. select、poll与epoll的优缺点
  12. 浏览器,图片格式及特点
  13. 【语音加密】基于matlab混沌+AES语音加密解密【含Matlab源码 1593期】
  14. Collection、List、泛型、数据结构
  15. 关于《走进名企之微软亚洲研究院》的观后感
  16. 弗吉尼亚大学计算机就业如何,假设你是新华中学的学生李华,高中毕业后想到美国弗吉尼亚大学(University of Virginia)计算机专业深造...
  17. java流程图都有哪些,盘点国内都有哪些免费好用的流程图设计工具
  18. java中获取中文拼音(全拼)和中文首字母
  19. unity3D-learning:UI背包系统
  20. e1000网卡驱动第二天

热门文章

  1. SPSSPRO模型归纳整理
  2. 大使、布道师、贡献者,OpenHarmony社区发起三大贡献者激励计划
  3. 解析:学Java好还是HTML5好?
  4. Excel表格导入校验
  5. 计算机程序设计员二级证书,大厂计算机程序设计员职业资格证书
  6. MFC应用中添加背景音乐,及音乐下载
  7. ibm aix_IBM AIX SAN Volume Controller更新和迁移
  8. [蛋蛋无厘头日记]收到礼物喵~o(∩_∩)o
  9. P1463 [POI2001][HAOI2007]反素数 题解
  10. 促使新网站快速增加百度收录的几个不外传技巧