
1097. 池塘计数 C++ FloodFill算法
读取输入:获取矩阵的尺寸n和m,以及矩阵本身。 初始化计数器:用于记录找到多少片池塘。 遍历矩阵:对于每一个单元格,如果是“W”且还未被访问过,就启动一次BFS。 BFS处理:从单元格开始,扩展到所有相连的“W”单元格,将它们标记为“.”,直到队列为空。 读取输入:使用 遍历矩阵:双重循环遍历每一个单元格,如果是“W”,则启动BFS。 BFS处理:从当前单元格开始,检查八个方向。对于在矩阵范围内且是“W”的单元格,将其标记为“.”并加入队列,继续扩展。 计数器更新:每次启动BFS时,计数器加一,最后输出计数器的值,即池塘的数量。
发布日期:2021-05-08 02:33:18
浏览次数:39
分类:精选文章
本文共 1531 字,大约阅读时间需要 5 分钟。
为了解决这个问题,我们需要计算农夫约翰的土地中形成了多少片池塘。每个单元格如果是“W”则表示有水,否则是“.”。池塘是由相连的“W”单元格组成的,相连指的是上下左右和四个对角线方向,即八邻域。
方法思路
我们可以使用广度优先搜索(BFS)来解决这个问题。BFS适合处理这种寻找连通区域的问题,因为它可以逐层扩展地理区域,直到覆盖所有连通区域。具体步骤如下:
解决代码
#includeusing namespace std;int n, m;char farm[n][m];int dx[8] = {1, 1, 1, 0, 0, -1, -1, -1};int dy[8] = {1, 0, -1, 1, -1, 1, 0, -1};void bfs(int x, int y) { queue > q; q.push({x, y}); while (!q.empty()) { auto current = q.front(); q.pop(); for (int i = 0; i < 8; ++i) { int nx = current.first + dx[i]; int ny = current.second + dy[i]; if (nx >= 0 && nx < n && ny >= 0 && ny < m) { if (farm[nx][ny] == 'W') { farm[nx][ny] = '.'; q.push({nx, ny}); } } } }}int main() { scanf("%d %d", &n, &m); for (int i = 0; i < n; ++i) { scanf("%s", farm[i]); } int count = 0; for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { if (farm[i][j] == 'W') { count++; bfs(i, j); } } } printf("%d", count); return 0;}
代码解释
scanf
读取矩阵的尺寸n和m,然后读取n行,每行m个字符,存储到二维数组farm
中。这种方法确保了每个“W”单元格只被处理一次,时间复杂度为O(nm),适用于较大的矩阵。
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月01日 06时25分31秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
命令模式【Command Pattern】
2019-03-05
OSI 7 层网络模型
2019-03-05
JDK 内置的多线程协作工具类的使用场景
2019-03-05
Java 中哪些对象可以获取类对象
2019-03-05
linux 的 cp 命令如何复制不提示覆盖
2019-03-05
缓存穿透 / 缓存击穿 / 缓存雪崩 / 缓存一致性
2019-03-05
linux 的 sleep 命令
2019-03-05
js 的 let var const 区别
2019-03-05
vue计算属性和监听器区别
2019-03-05
11.2.6 时间值的小数秒
2019-03-05
11.2.7 日期和时间类型之间的转换
2019-03-05
redis 内存溢出_从数据存储的角度告诉你Redis为什么这么快!
2019-03-05
实例分析Facebook激励视频广告接入
2019-03-05
实例:使用OKGO下载网络压缩包资源,然后解压缩放在本地使用
2019-03-05
解决mybatis嵌套查询使用PageHelper分页不准确
2019-03-05
Redis源码分析(七)--- zipmap压缩图
2019-03-05
大规模集群自动化部署工具--Chef的安装部署
2019-03-05
HDFS源码分析(六)-----租约
2019-03-05
自定义Hive Sql Job分析工具
2019-03-05
聊聊HDFS RBF第二阶段的主要改进
2019-03-05