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

OD 算法题 B卷【寻找最大价值的矿堆】

文章目录

  • 寻找最大价值的矿堆

寻找最大价值的矿堆

  • 给定一个由0、1、2组成的地图,矿堆只能由上下左右相邻的金矿、银矿连接形成,超出地图范围可以认为是空地;
  • 0表示空地,1表示银矿,2表示金矿;编号表示价值;
  • 找出地图中最大价值的矿堆并输出其价值;

输入描述:
地图元素
输出描述:
矿堆的最大价值

示例1
输入:
22220
00000
00000
01111
输出:
8

示例2
输入:
22220
00020
00010
01111
输出:
15

示例3
输入:
20000
00920
00000
00111
输出:
3

python实现:

  • 遍历每个位置,值为1或者2时,开始以该位置为起点的广度优先搜索;
  • 每次BFS都计算一次累加的价值;
  • 多次BFS取最大的价值;
  • 注意:不确定输入多少行时,做EOFError异常捕获;

def BFS(row, col, mat):# 存储已访问visited = []# BFS借助队列q = [(row, col)]# 四个方向directions = [0, 1, 0, -1, 0]cur_cost = 0global r, cwhile q:pos = q.pop(0)visited.append(pos)cur_row, cur_col = pos# 加当前位置的价值cur_cost += mat[cur_row][cur_col]# 搜索四个方向for d in range(4):next_row = cur_row + directions[d]next_col = cur_col + directions[d+1]# 位置有效,且为1或2 则入队if next_row >= 0 and next_row < r and next_col >= 0 and next_col < c \and mat[next_row][next_col] in [1, 2] and (next_row, next_col) not in visited:q.append((next_row, next_col))return cur_costmatrix = []
for i in range(4):  # 不确定是几行 (这里只是模拟)matrix.append([int(j) for j in input().strip()])max_cost = 0
# 获取行列数
r, c = len(matrix), len(matrix[0])
# 从1/2位置开始广度优先搜索
for r_ in range(r):for c_ in range(c):if matrix[r_][c_] in [1, 2]:cur_cost = BFS(r_, c_, matrix)if cur_cost > max_cost:max_cost = cur_cost# 输出最大价值
print(max_cost)
http://www.xdnf.cn/news/8836.html

相关文章:

  • 匿名内部类与函数式编程
  • MYSQL中的分库分表
  • CQF预备知识:Python相关库 -- NumPy 基础知识 - ndarray 索引
  • MedGemma 简介
  • leetcode3-无重复字符的最长子串
  • Spring Security框架全面解析与应用实践
  • gcc编译优化参数-O0和-Os区别
  • 先知AI打造智能企业引擎
  • kaggle房价预测-0.12619-排名:757
  • ARM架构深度解析:从指令集到内核设计
  • 机械师安装ubantu双系统:二、磁盘分区
  • 小可爬楼
  • 通过 Terraform 构建您的第一个 Azure Linux 虚拟机
  • 湖仓融合的“最后一公里”:StarRocks 存算分离如何优化湖上实时分析?
  • openssl 使用生成key pem
  • 万事如函数
  • Windows File Copy
  • 第11次课 while循环
  • (27)运动目标检测 之 分类(如YOLO) 数据集自动划分
  • 关于多类型数据划分清洗的整理
  • 09_模型训练篇-卷积(上):如何用卷积为计算机“开天眼”?
  • 【C语言】指针全局变量
  • PostGIS使用小结
  • 微雪墨水屏 如何 控制绘制图形(如点、线、矩形等)线条粗细或点的大小
  • ChatGPT+知网,AI如何辅助真实科研写作流程?
  • 以太坊的基本理解
  • 2025年- H47-Lc155 --102. 二叉树的层序遍历(队列、广搜)--Java版
  • STL-从list节点创建和释放展开(内存管理)
  • Claude Code Agent 模式深度解读(一)!Anthropic提出的下一代Code CLI工具
  • 第四章 面向对象(基础)