题目大意:一场大雨后,在一片土地上出现若干水洼,现在把这片土地看成一个mxn的二维方块矩阵,其中有水的方块用'W'表示,陆地用'H'表示。现在由陆地方块或者边界围成的有水方块视为一个水洼(单个有水方块也算),且只有水平或垂直方向连续的含水方块才能视为属于同一个水洼(斜着的不行),请计算这片土地上有多少个水洼。

输入:第一行两个整数m和n,接下来m行连续的字符串,长度均为n,表示mxn的土地矩阵,每个字符只能为'W'或'H'。

输出:一个整数,表示水洼的数量。

思路:遍历二维数组,每次找到一个'W'时水洼数量加一,然后将这个方块修改为'H',并对其上下左右四个方向dfs搜索,把所有可能连续的'W‘方块全修改为’H‘,注意判断数组边界。

代码

#include<iostream>
#include<cstring>
using namespace std;
char a[1001][1001];
int m,n;void dfs(int i,int j){if(a[i][j]!='W') return;else{a[i][j]='H';if(i-1>=0&&i-1<m&&j>=0&&j<n) dfs(i-1,j);if(j-1>=0&&j-1<n&&i>=0&&i<m) dfs(i,j-1);if(j+1<n&&j+1>=0&&i>=0&&i<m) dfs(i,j+1);if(i+1<m&&i+1>=0&&j>=0&&j<n) dfs(i+1,j);}
}int main(){cin>>m>>n;int i,j;cin.get();for(i=0;i<m;i++){for(j=0;j<n;j++){cin>>a[i][j];   }}int count=0;for(i=0;i<m;i++){for(j=0;j<n;j++){if(a[i][j]=='W'){dfs(i,j);count++;}}}cout<<count<<endl;return 0;
} 

运行结果

【C++】DFS——计算土地上水洼的数量相关推荐

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

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

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

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

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

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

  4. 【深度学习】深度学习中模型计算量(FLOPs)和参数量(Params)等的理解以及四种在python应用的计算方法总结

    接下来要分别概述以下内容: 1 首先什么是参数量,什么是计算量 2 如何计算 参数量,如何统计 计算量 3 换算参数量,把他换算成我们常用的单位,比如:mb 4 对于各个经典网络,论述他们是计算量大还 ...

  5. 计算机田亩公式,怎样计算土地亩数?

    原标题:怎样计算土地亩数? 土地亩数计算公式,1亩=60平方丈=6000平方尺,1亩=666.667平方米,我们平常求亩数,一般不用这个数值求,嫌麻烦,而要用更简易的计算方法. 公式是:长(米)×宽( ...

  6. (训练三)王朗自然保护区---数据集部分补充说明:计算xml文件里面目标数量   生成训练和测试的txt文件

    1 计算xml文件里面目标数量 # -*- coding:utf-8 -*- import os import xml.etree.ElementTree as ET import numpy as ...

  7. 神经网络的计算量(FLOPs)、参数量(Params)、推理时间(FPS)的定义及实现方法

    目录 1. 定义 2. 实现方法 2.1. 计算参数量 2.2. 计算参数量和FLOPs 2.3. 计算推理时间(FPS) 3. 数据大小对参数量和FLOPs的影响 4. 参数量和FLOPs对于硬件要 ...

  8. 微信小程序功能:全选和反选--修改商品数量、删除商品--计算总价格和总数量--收货地址

    微信小程序–购物车页面(核心) 包含功能点: 全选和反选 计算:总价格和总数量 修改商品数量.删除商品 收货地址 结构:cart.wxml <!-- 收货地址 --> <view c ...

  9. 【DFS练习】水洼数

    问题描述: 水洼数目有一个大小为N * M的院子,雨后积起了水, 八连通的积水被认为是连在一起的,请求出园子里面总共有多少水洼 限制条件 N, M <=100 测试集在代码后面 总体思路: 一个 ...

最新文章

  1. 根据经纬度批量计算多个点到多个点之间的距离
  2. Gradle项目中gradle.build文件中的buildScript代码块
  3. 简单易上手的Bootstrap
  4. 结构体位域及联合体解析
  5. 关于python学习路线
  6. Qt在linux下无法输入中文,Ubuntu使用集成开发环境QT无法输入中文的解决方法
  7. 硬件知识:u-boot和bootloader的区别
  8. ABP vNext微服务架构详细教程——项目部署
  9. 查询2021高考成绩位次,云南一分一段表查询2021-云南高考位次查询(文科、理科)...
  10. (绝对有用)iOS获取UUID,并使用keychain存储
  11. IOI2008Island 基环树直径。
  12. 计算机与临床医学的应用,论临床医学教育中计算机系统的应用.pdf
  13. 流水号(自动编号)生成相关问题(并发、事务)及解决方案
  14. linux游戏主机,Steam OS界面介绍
  15. vue 图表组件_基于Vue.js中可用的JUI图表的Vue组件
  16. 2022年诺贝尔物理学奖的科学内涵辨识
  17. DOTCPP:有关1148心得
  18. Win7系统服务优化攻略
  19. Android ListView优化之局部刷新(更新)(非notifyDataSetChanged)
  20. MySQL 聚集索引(InnoDB)和 非聚集索引(MyISAM) 精讲~两张图彻底搞懂

热门文章

  1. 网站图片怎么优化搜索排名
  2. 【好题分享】适合C++初学者(数组的定义与初始化)
  3. ERP失败案例:业务流程再造失误
  4. MySQL使用group by分组查询每组最新的一笔数据
  5. 零基础学爬虫大概多久?
  6. 云班课计算机基础知识答案,云班课上的作业
  7. 学习方法 | 玩开源如何具有“趟坑” 的意识?
  8. 20222817《Linux内核原理与分析》第五周作业
  9. 工业机器人打磨抛光编程员工资_工业机器人调试方面,工资高吗?累吗?
  10. php信鸽针对别名,【经验】阿翁:信鸽回血留种公式(图)