问题描述:

水洼数目有一个大小为N * M的院子,雨后积起了水,
八连通的积水被认为是连在一起的,请求出园子里面总共有多少水洼
限制条件
N, M <=100

测试集在代码后面

总体思路:

  • 一个水洼一定是一个或多个W连接在一起的,所以可以先找到第一个W,然后看与这个W相连接的其他W,当他的周围没有W只有.的时候,就检查完了一个水洼
  • 由于检查过的积水不能第二次被计算,所以一个巧妙的方法就是检查之后把他变成点(路过之处寸草不生)
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
// 剪枝:递归之前做限定
const int maxn = 20;
int n, m, cnt = 0;
char a[maxn][maxn];void dfs(int i, int j){a[i][j] = '.';for(int k = -1; k < 2; k++){       //-1,0,1分别代表横坐标向左,不动,向右for(int l = -1; l < 2; l++){ //纵坐标if(k == 0 && l == 0) continue;//扣去x和y都不动的情况if(i+k <= n-1 && i+k >= 0 && j+l <= m-1 && j+l >= 0){//检查x和y动了之后是否越界if(a[i+k][j+l] == 'W'){//如果是一个水洼,继续深搜dfs(i+k, j+l);}}}}
}int main(){cin >> n >> m;for(int i = 0; i < n; i++){string s;cin >> s;for(int j = 0; j < m; j++){a[i][j] = s[j];}}for(int i = 0; i< n; i++){for(int j = 0; j < m; j++){if(a[i][j] == 'W'){dfs(i,j);cnt++;}}}cout << cnt << endl;return 0;
}
/*
测试集:
..W.....WW
.W......W.
WW.....WW.
........W.
....WW..WW
....W...W.
...W.W....
..W...W...
...W.W....
....W.....答案: 3 */

【DFS练习】水洼数相关推荐

  1. 水洼数 DFS 蓝桥杯 java代码

    水洼数 DFS 蓝桥杯 java代码 有一个大小为N * M的院子,雨后积起了水,八连通的积水被认为是连在一起的,请求出园子里面总共有多少水洼 限制条件 N, M <=100 10 12 W.. ...

  2. 水洼数(Java)(dfs)

    题解: import java.util.Scanner;public class Practice_水洼数 {static Scanner in = new Scanner(System.in);s ...

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

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

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

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

  5. 【C++】利用DFS求解水洼数目问题

    题目描述 有一个大小为N x M的园子,雨后积了很多水. 八连通的积水被认为是连接在一起的.(八连通指的是下图中相对.的W部分) 请求出园子里总共有多少个水洼? 八连通的水洼如下所示: W W W W ...

  6. 深度搜索—-深度搜索解决矩阵搜索问题(水洼数计算)

    深度搜索--深度搜索解决矩阵搜索问题(水洼数计算) 一.题目 有一个大小为N*M的园子,雨后积起了水.八连通的计税被认为是连接在一起的.请求出园子里总共有多少水洼? (八连通指的是下图中相对w的*的部 ...

  7. 水洼数dfs(java)

    问题描述: 有一个大小为 N×M 的园子,雨后积起了水.八连通的积水被认为是连接在一起的.请求出 园子里总共有多少水洼? *限制条件N, M ≤ 100 样例:输入 N=10, M=12园子如下图 ( ...

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

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

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

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

最新文章

  1. Kruskal算法 - C语言详解
  2. .net System.Web.Caching.Cache缓存类使用详解(转载)
  3. 陈老师Linux内核进程管理导学
  4. Win2003 Server 安全的个人Web服务器
  5. 腾讯如何打造新基建时代高可扩展的区块链引擎
  6. oracle如何在本地建库,oracle在本地建库
  7. poi读取excel导入mysql_poi读取xlsx表格内容并插入到mysql中,OutOfMemoryError
  8. Tomcat介绍,安装jdk,安装tomcat,配置Tomcat监听80端口
  9. 【转】 Android定时器
  10. sqluldr2支持mysql吗_sqluldr2工具使用方法
  11. Nginx跨域配置 proxy_pass
  12. 深圳必去的50个免费景点 景色绝美
  13. 【20180619】【射频通信】混频、中频等高频知识,频谱分析仪的带宽RBW、VBW、SWT,射频信号发生器的使用,GNSS一些基本常识,PCB和MSPS的含义
  14. spring boot 访问路径404是会转到/error路径,倒是拦截器失效
  15. Domino V12 Beta新玩法
  16. SQL 语句的类型和 用法
  17. C语言中excit函数,2010年12月英语四级全真预测试卷及答案解析(4)
  18. vs使用教程3:(调试断点)
  19. 安全L1-1.2 信息安全概述-协议层脆弱性分析01-物理层及链路层
  20. 2021电赛题目预测

热门文章

  1. antD布局不能占满屏幕问题
  2. 在移动开发快捷推广方式
  3. 壞壞老婆VS傻傻老公
  4. 【论文解读】持续学习三种情形
  5. Linux利用脏牛漏洞提权
  6. 自己做量化交易软件(7)通通量化回测设计2-双均线策略回测
  7. UVA10158- War
  8. HTML+CSS小白入门与进阶教程
  9. qq聊天纪录被删除应该如何恢复
  10. 机器学习项目(五) 电影推荐系统(二)