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

【C++算法】81.BFS解决FloodFill算法_岛屿的最大面积

文章目录

    • 题目链接:
    • 题目描述:
    • 解法
    • C++ 算法代码:


题目链接:

695. 岛屿的最大面积


题目描述:

8dfdc43f56c471cb22d3b21755d7bfaa


解法

BFS一层层剥开。

要统计所有连通块的最大面积。

当遇到第一个没有遍历过的1的时候,相当于找到一块陆地,同时要搞一个变量count来统计面积。


C++ 算法代码:

class Solution {// 定义四个方向的偏移量:右、左、下、上int dx[4] = {0, 0, 1, -1};int dy[4] = {1, -1, 0, 0};// 标记数组,记录每个位置是否被访问过bool vis[51][51];// 网格的行数和列数int m, n;public:// 主函数:计算最大岛屿面积int maxAreaOfIsland(vector<vector<int>>& grid) {// 获取网格的行数和列数m = grid.size(), n = grid[0].size();int ret = 0;  // 记录最大岛屿面积// 遍历整个网格for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {// 如果当前位置是陆地且未被访问过if (grid[i][j] == 1 && !vis[i][j]) {// 更新最大面积ret = max(ret, bfs(grid, i, j));}}}return ret;  // 返回最大岛屿面积}// BFS辅助函数:计算并返回以(i,j)为起点的岛屿面积int bfs(vector<vector<int>>& grid, int i, int j) {int count = 0;  // 记录当前岛屿的面积queue<pair<int, int>> q;  // 创建队列用于BFSq.push({i, j});  // 将起点加入队列vis[i][j] = true;  // 标记为已访问count++;  // 面积加1while (q.size()) {auto [a, b] = q.front();  // 取出队首元素q.pop();// 遍历四个方向for (int k = 0; k < 4; k++) {int x = a + dx[k], y = b + dy[k];  // 计算新坐标// 检查新坐标是否有效if (x >= 0 && x < m && y >= 0 && y < n &&  // 边界检查grid[x][y] == 1 &&  // 是陆地!vis[x][y]) {  // 未访问过q.push({x, y});  // 加入队列vis[x][y] = true;  // 标记为已访问count++;  // 面积加1}}}return count;  // 返回当前岛屿的面积}
};
http://www.xdnf.cn/news/16626.html

相关文章:

  • 粒子群优化算法(Particle Swarm Optimization, PSO) 求解二维 Rastrigin 函数最小值问题
  • 本土化DevOps实践:Gitee为核心的协作工具链与高效落地指南
  • Python的垃圾回收机制
  • DAY21 常见的降维算法
  • 项目质量如何把控?核心要点分析
  • 【Pycharm】Python最好的工具
  • 【ComfyUI学习笔记04】案例学习:局部重绘 - 上
  • 服务器分布式的作用都有什么?
  • ABP VNext + GraphQL Federation:跨微服务联合 Schema 分层
  • Apache Ignite 的连续查询(Continuous Queries)功能的详细说明
  • Python的生态力量:现代开发的通用工具与创新引擎
  • 【PHP】Swoole:CentOS安装Composer+Hyperf
  • ⭐ Unity 异步加载PPT页面 并 首帧无卡顿显示
  • 【EDA】Calma--早期版图绘制工具商
  • AR辅助前端设计:虚实融合场景下的设备维修指引界面开发实践
  • 2025年06月03日 Go生态洞察:语法层面的错误处理支持
  • Java 11 新特性详解与代码示例
  • Spring Boot中的this::语法糖详解
  • 递归推理树(RR-Tree)系统:构建认知推理的骨架结构
  • 力扣热题100--------240.搜索二维矩阵
  • Generative AI in Game Development
  • 板凳-------Mysql cookbook学习 (十二--------7)
  • 亚马逊 Vine 计划:评论生态重构与合规运营策略
  • C++基础:模拟实现queue和stack。底层:适配器
  • 解决mac下git pull、push需要输入密码
  • MySQL(配置)——MariaDB使用
  • 探索 Vim:Linux 下的高效文本编辑利器
  • SBB指令的“生活小剧场“
  • Linux 系统启动与 GRUB2 核心操作指南
  • Kafka运维实战 17 - kafka 分区副本从 1 增加到 3【实战】