当前位置: 首页 > news >正文

洪水填充

洪水填充算法(flood fill algorithm),也称为泛洪算法,用于将格点的某一个连通区域内的所有格点状态修改为目标状态,状态往往用颜色表示。一般的处理方法是,从一个起始点开始把附近与其连通的点填充成新的颜色,直到连通区域内的所有点都被处理过为止,因为其思路类似洪水从一个区域扩散到所有能到达的其他区域而得名。

DFS、BFS 都可以用来实现洪水填充算法,常见的邻域包括四邻域和八邻域等。

image

例题:P1596 [USACO10OCT] Lake Counting S

  1. 存储网格图
    f[x][y] 存储网格图
    dx[8] dy[8] 存储方向偏移量
  2. 搜索
    枚举单元格,判断是否可以进入
    如果可以进入,则水坑数量+1,并且将该单元格所属水坑的其他单元格全都进入一遍(这里DFS和BFS都可实现,两种实现的时间复杂度都为 \(O(nm)\)
    为避免重复搜索,对走过的单元格进行标记
参考代码(DFS 实现)
#include <cstdio>
char f[105][105];
int 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 dfs(int x, int y) {f[x][y] = '.';for (int i = 0; i < 8; i++) {int xx = x + dx[i];int yy = y + dy[i];if (xx >= 0 && xx < n && yy >= 0 && yy < m && f[xx][yy] == 'W') {dfs(xx, yy);}}
}
int main()
{scanf("%d%d", &n, &m);for (int i = 0; i < n; i++) scanf("%s", f[i]);int lake = 0;for (int i = 0; i < n; i++)for (int j = 0; j < m; j++) if (f[i][j] == 'W') {lake++;dfs(i, j);}printf("%d\n", lake);return 0;
}
参考代码(BFS 实现)
#include <cstdio>
#include <queue>
using namespace std;
char f[105][105];
int n, m;
int dx[8] = {-1, -1, -1, 0, 0, 1, 1, 1};
int dy[8] = {-1, 0, 1, -1, 1, -1, 0, 1};
struct Node {int x, y;
};
void bfs(int x, int y) {f[x][y] = '.';queue<Node> q;q.push({x, y});while (!q.empty()) {Node t = q.front(); q.pop();for (int i = 0; i < 8; i++) {int xx = t.x + dx[i], yy = t.y + dy[i];if (xx >= 0 && xx < n && yy >= 0 && yy < m && f[xx][yy] == 'W') {f[xx][yy] = '.';q.push({xx, yy});}}}
}
int main()
{scanf("%d%d", &n, &m);for (int i = 0; i < n; i++) scanf("%s", f[i]);int lake = 0;for (int i = 0; i < n; i++)for (int j = 0; j < m; j++) if (f[i][j] == 'W') {lake++;bfs(i, j);}printf("%d\n", lake);return 0;
}
http://www.jsqmd.com/news/358269/

相关文章:

  • 用SimAuto API批量修改风机参数
  • 完整教程:FFmpeg 基本数据结构 AVInputFormat 分析
  • 2026年泓信塑料生产厂家,产品强度高价格合理哪款性价比高 - 工业设备
  • 2026年热门的空气悬浮风机/空气悬浮真空泵帮我推荐几家源头厂家推荐 - 行业平台推荐
  • CANN ATC工具深度解析:模型转换从框架到NPU的桥梁
  • 2026年盘点可靠的FRP采光瓦服务商,性价比高的品牌有哪些? - mypinpai
  • 2026年厦门旧房翻新公司测评报告:基于用户调研的口碑维度深度解析 - 品牌推荐
  • FRP采光瓦生产企业哪家价格实惠,适合北京地区的项目 - 工业推荐榜
  • 单播、广播与组播
  • 美团收购叮咚,叮咚梁昌霖选择“华丽退场”!
  • 2026年京津冀瓷砖品牌年度排名,雅露轩瓷砖厂家靠谱推荐 - 工业品牌热点
  • vue打包路径敏感消除;vue路径大小写引入检查与修复
  • 京东商品详情接口深度解析:从宙斯签名到商详内容价值重构
  • 探讨流延膜机优质定制厂,口碑好的厂家有哪些 - myqiye
  • 用S7-200 PLC玩转自动售货机:组态王实战手记
  • 2.8记录
  • 中式装修公司哪家服务靠谱?2026年厦门中式风格装修公司推荐与排名,解决材料与售后核心痛点 - 品牌推荐
  • 真的太省时间!千笔·专业降AIGC智能体,口碑爆棚的降AI率工具
  • 亲测有效!企业年会扫码投票小程序实战分享
  • 2026年Java面试题基础系列228道(4),快看看哪些你还不会?
  • 强烈安利8个AI论文工具:研究生毕业论文写作必备测评与推荐
  • 三相桥式全控整流电路原理及电路图
  • 聊聊福州口碑好的美术集训辅导机构排名 - mypinpai
  • 实测才敢推!8个AI论文写作软件测评:MBA毕业论文+科研写作必备工具推荐
  • AI元人文:多元共生与价值原语——智能时代文明操作系统的哲学构想
  • 服务器病毒处理记录
  • 2026年杭州地区FRP采光瓦生产厂年度排名,哪家更值得选揭晓 - 工业推荐榜
  • 江苏格菲普反馈怎么样,看看它如何解决环保设备运行成本难题 - 工业品牌热点
  • 【开题答辩全过程】以 基于SSM的共享自习室预约管理系统的设计与实现为例,包含答辩的问题和答案
  • 2026年江苏流延膜机创新型厂家,哪家比较合适 - myqiye