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

OD 算法题 B卷【最大岛屿体积】

文章目录

  • 最大岛屿体积

最大岛屿体积

  • 大于0的数表示陆地,0表示水,请计算由陆地、水组成的网格中最大岛屿的体积;
  • 陆地的数字之和表示所在岛屿的体积,岛屿总是被水包围,并且每座岛屿只能由水平或者垂直方向上相邻的陆地连接形成;
  • 假设该网格的四条边均被水包围;

输入描述:
第一行输入网格的宽度、高度;
后面几行输入网格数据;

输出描述:
输出岛屿的最大体积

示例
输入:
5 5
0 1 1 0 0
0 1 1 0 0
0 0 0 0 0
0 0 1 2 3
0 0 1 3 9
输出:
19

python实现:

  • BFS,借助队列;
  • 遍历二维数组中的每个值,当其大于0且未被访问时,开始广度优先搜索,并计算当前岛屿的体积,与默认的最大值比较,取两者中的最大值;
  • 注意避免位置的重复入队,会导致某些陆地值的重复计算;

col, row = list(map(int, input().strip().split()))
matrix = []
for i in range(row):matrix.append(list(map(int, input().strip().split())))# 记录岛屿的最大体积
max_vol = 0
# 标记是否已访问
visited = [[0 for j in range(col)] for i in range(row)]# 遍历二维数组中的每个元素,大于0时则开始广度优先搜索陆地
for i in range(row):for j in range(col):if matrix[i][j] > 0 and visited[i][j] == 0: # 陆地的起始点,并开始广度优先搜索# BFS 借助队列q = [(i, j)]  # 存入起始点# 四个方向directions = [0, 1, 0, -1, 0]temp_vol = 0  # 统计当前岛屿的体积while q:cur_x, cur_y = q.pop(0)print("cur x, y", cur_x, cur_y)temp_vol += matrix[cur_x][cur_y]visited[cur_x][cur_y] = 1# 取四个方向的位置for d in range(4):next_x = cur_x + directions[d]next_y = cur_y + directions[d+1]if next_x >= 0 and next_x < row and next_y >= 0 and next_y < col and visited[next_x][next_y] == 0 and matrix[next_x][next_y] > 0:if (next_x, next_y) not in q:  # 注意去重q.append((next_x, next_y))# 取岛屿体积的最大值print(temp_vol)max_vol = max(max_vol, temp_vol)print(max_vol)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/241421.html

相关文章:

  • 第三章支线四 ·事件风暴 · 时序与响应的协奏
  • 无源一阶低通电路噪声如何计算
  • NIFI的处理器:SplitJson 2.4.0
  • 达梦数据库EXISTS子查询实战指南
  • 如何迁移Cordova应用到HarmonyOS 5 以及迁移时常见的问题?
  • Solidity从入门到精通-Remix的基本使用和Solidity的基本数据类型
  • 当建筑成为“精装盒子”:MiC技术如何重塑未来建造
  • 期货与期权市场基本原理是什么?
  • configure构建工程
  • 申请大模型备案对企业的具体价值体现在哪些方面?
  • 数据集转换xml2txt 、xml2json、json2coco
  • 32位寻址与64位寻址
  • Logistics | 盘盈盘亏与报溢报损
  • 4.redis集群
  • Spring Boot 多模块项目最佳实践:结构设计与依赖管理
  • C++中优雅的属性封装:Sint类设计分析
  • 【链接、装载和库】三、目标文件详解
  • [Java恶补day20] 54. 螺旋矩阵
  • RK3568/RK3588 KVM系统虚拟化解决方案
  • 吉客云ERP集成金蝶ERP(云星空、云星辰、云星瀚、KIS、K3、EAS)
  • 全面解析数据库:从基础概念到前沿应用​
  • 条件语句 if语句 + if...else+switch语句+三元运算符
  • 构建欺诈事件的结构化威胁建模框架
  • Invalid context structure解决Dify框架中图像推理错误:一步步排查与修复指南
  • 软件开发工程师如何在项目开发中了解学习 ISO 13485(2)
  • 编程工具点亮效率之光
  • 中小企业碳账本管理指南
  • 瞬移--BFS+set去重
  • 【DVWA系列】——xss(Reflected)——Medium详细教程
  • sql server连接遇到的问题