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

【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.dtcms.com/a/304150.html

相关文章:

  • echarts图表点击legend报错问题(折线图)
  • [ java泛型 ] 只闻其名---->“浅浅“了解
  • Java面试宝典:MySQL中的锁
  • 如何在在NPM发布一个React组件
  • Kafka运维实战 16 - kafka 分区重新分配【实战】
  • numpy瑞士军刀 第三卷:实战演练 第七章 组合大阵
  • 【C++算法】77.优先级队列_数据流的中位数
  • Day23-二叉树的层序遍历(广度优先搜素)
  • React 图标库发布到 npm 仓库
  • 试用SAP BTP 02C:试用SAP HANA Schemas HDI Containers
  • 构建特定领域的大模型
  • OV IP证书如何满足PCI DSS要求
  • 网络通信基础(一)
  • 第十六章 Java基础-拼图小游戏
  • 测试自动化不踩坑:4 策略告别 “为自动化而自动化”
  • BERT和GPT和ELMO核心对比
  • vue3插槽详解
  • Python之禅
  • mac 字体遍历demo
  • 《林景媚与命运解放者》
  • OpenCV 学习探秘之四:从角点检测,SIFT/SURF/ORB特征提取,目标检测与识别,Haar级联分类人脸检测,再到机器学习等接口的全面实战应用与解析
  • MySQL(配置)——MariaDB使用
  • 2025北京师范大学数学分析考研试题
  • 15-C语言:第15~16天笔记
  • FreeRTOS在中断上下文中设置事件组,调度很慢的的解决方法
  • 智慧工地系统:科技如何重塑建筑现场?
  • macOS “Sploitlight“漏洞曝光:攻击者可窃取Apple Intelligence缓存数据
  • 用动态的观点看加锁
  • 新升级超值型系列32位单片机MM32G0005
  • C++类中动态内存分配注意手册