博物馆大盗问题 Python

python数据结构:博物馆大盗问题 博物馆大盗问题 ❖大盗潜入博物馆,面前有5件宝物,分别有重量和价值,大盗的背包仅能负重20公斤,请问如何选择宝物,总价值最高? item weight value 1 2 3 2 3 4 3 4 8 4 5 8 5 9 10 ❖我们把m(i,W)记为: 前i(1<=i<=5)个... 阅读详情
博物馆大盗问题

问题:

大盗潜入博物馆,面前有5件宝物,分别有重量w和价值v,大盗的背包仅能负重20 kg,请问如何选择宝物,总价值最高?

ItemWeightValue
123
234
348
458
5910

思路:

把 m(i, w) 记为:前 i 个宝物中,组合不超过 w 重量,得到的最大价值。
C:\Users\ldz\AppData\Roaming\Typora\typora-user-images

本题中,从m(1, 1)计算至m(5, 20)
在这里插入图片描述

动态规划代码:

tr = [
    None,
    {'w': 2, 'v': 3},
    {'w': 3, 'v': 4},
    {'w': 4, 'v': 8},
    {'w': 5, 'v': 8},
    {'w': 9, 'v': 10}
]
max_weight = 20

# 初始化二维表格 m[(i, w)]
m = {(i, w):0 for i in range(len(tr)) for w in range(max_weight + 1)}

# 逐个填写二位表格
for i in range(1, len(tr)):
    for w in range(1, max_weight + 1):
        if tr[i]['w'] > w:
            m[(i, w)] = m[(i-1, w)]
        else:
            m[(i, w)] = max(m[(i-1, w)], m[(i-1, w - tr[i]['w'])] + tr[i]['v'])

print m[(len(tr)-1, max_weight)]

递归代码:

tr = {(2, 3), (3, 4), (4, 8), (5, 8), (9, 10)}  # 集合
max_weight = 20

m = {}  # 记忆表格m

def thief(tr, w):
    # 终止条件
    if tr == set() or w == 0:
        m[(tuple(tr), w)] = 0
        return 0
    elif (tuple(tr), w) in m:
        return m[(tuple(tr), w)]
    # 递归调用
    else:
        vmax = 0
        for t in tr:
            if t[0] <= w:
                v = thief(tr - {t}, w - t[0]) + t[1]
                vmax = max(vmax, v)
        m[(tuple(tr), w)] = vmax   # 记录
        return vmax

print thief(tr, max_weight)
05_python_recursive 文章目录递归简介整数转换为任意进制递归图示turtle module分形树谢尔宾斯基Sierpinski三角形递归应用汉诺塔探索迷宫动态规划分治策略优化问题和贪心策略找零兑换的递归算法找零兑换的动态规划算法动态规划案例分析--博物馆大盗动态规划算法递归算法 递归简介 给定一个列,返回所有数的和 全括号表达式 数列的和 = 首个数 + 余下数列的和 def listsum(numlist)... 阅读详情

相关推荐

数据结构:博物馆之夜问题

问题描述:一天夜里,大盗 Kid 潜入著名的卢浮宫去偷取名画蒙娜丽莎。当他取下这幅名画时, 触了警报器,不得已他放下名画准备逃跑。整个展馆平面可以看到是一个 N*M 正方形格子大小的迷宫,展馆里有许多障碍物, Kid以选择走或者跳跃。如果 Kid 选择走,那么他可以从当前格子沿着四个方向 ( 上,下,左 ,右) 走到相邻的格子中;如果 Kid 选择跳跃,那么他可以从当前格子沿着四个方向(东南,西南,东北,西北)跳入对角线上的格子中。

Python数据结构21:动态规划:有负重限制的最大价值问题:博物馆大盗问题的动态规划解法和递归解法

有负重限制的最大价值问题的动态规划解法和递归解法

YangStudent的博客 1292

博物馆建筑

博物馆建筑施工图

背包问题 -- 博物馆大盗

背包

Zeus_daifu的博客 595

从零打造M328晶体管测试仪:硬件DIY与烧录避坑指南

本文是一份详尽的M328晶体管测试仪DIY指南,涵盖从硬件选型、PCB设计、焊接组装到固件烧录的全过程。重点解析了使用AVR单片机与Arduino IDE环境时,如何正确设置熔丝位以避免“白屏”等常见问题,并提供了使用ISP编程器进行烧录的实操步骤与校准方法,帮助电子爱好者成功打造属于自己的高性价比元件测试工具。

weixin_29243063的博客 475

Nvidia Isaac Sim图形界面 入门教程 2024(3)

在使用Isaac Sim时,最先接触到的应该是它的图形界面,此处将简单介绍图形界面中常用的一些组件:Isaac Sim的界面的常用内容可以分为几个板块。

m0_56661101的博客 4546

PKU数据结构与算法Python版--习题总结(10)--博物馆大盗

1、题目 给定一个宝物列表treasureList = [{‘w’: 2,‘v’: 3}, {‘w’: 3,‘v’: 4}, …] 注意:每样宝物只有1个。 给定包裹最多承重maxWeight > 0,实现一个函数,根据以上条件得到最高总价值以及对应的宝物 参数:宝物列表treasureList,背包最大承重maxWeight 返回值:最大总价值maxValue,选取的宝物列表choosen...

qq_46398951的博客 880

MCU中GPIO口的驱动方式

MCU中GPIO口的驱动方式 导读: MCU芯片中GPIO口的驱动方式大的可分为输出和输入两类,小的分可以分为8种。 一、四种输入方式 ①上拉输入: 上拉输入抗干扰能力强,特别适合接地信号的输入(比如低电平有效的按键信号输入)。其工作原理如图1所示。 I/O 端口与TTL 施密特触发器之前接入了一个30K~50K 欧姆的上拉电阻,当I/O 端口悬空时,此时MCU 也能读到稳定的高电平状态,...

优快云Frewen的博客 3372

【数据结构】【动态规划】博物馆大盗问题

# 宝物的重量和价值 tr = [None, {'w':2, 'v':3},{'w':3, 'v':4}, {'w':4, 'v':8},{'w':5, 'v':8}, {'w':9, 'v':10}] # 大盗最大承重 max_w = 20 # 初始化二维表格m[(i,w)] # 表示前i个宝物中,最大重量w的组合,所得到的最大价值 # 当i什么都不取,或w上限为0,价值均为0 m = {(i, w):0 for i in range(le...

ayangyangyang25的博客 531

【操作系统】 Operation System 第二章:操作系统基础操作

2.1 操作系统的启动 (1)CPU, I/O, 内存通过总线连接。 (2)DISK:存放OS; BIOS:基本I/O处理系统( basic I/O system); Bootloader: 加载OS到内存中。 (3)当电脑通电时,段寄存器CS和指令寄存器IP能够确定一个内存地址,例如CS:IP = 0xf000:fff0. (4)POST(加电自检),寻找显卡和执行BIOS。(显示器,键盘…是否...

iwanderu的博客 1万+

【总目录】AUTOSAR精进之路专栏介绍及内容目录持续更新...

本专栏系统讲解AUTOSAR汽车电子开发技术,包含Eth/OS/Can/Lin等协议栈、MCAL驱动、功能安全等核心模块。内容基于实际项目经验,从概念原理到工程配置、特殊需求实现及问题排查进行深入剖析。重点涵盖TC3xx芯片平台开发、多核OS、网络管理、存储协议栈等难点问题,提供100+篇原创技术文章。专栏采用付费模式,保证内容完整性和持续更新,并提供专业答疑服务。适合汽车电子工程师系统学习AUTOSAR开发技术。

qq_36056498的博客 6505

Python数算:动态规划之博物馆大盗问题

  大盗潜入博物馆,面前有5件宝物,分别有重量和价值,大盗的背包仅能负重20公斤,请问如何选择宝物,总价值最高?   item weight value 0 2 3 1 3 4 2 4 8 3 5 8 4 9 10 代码及解答: # 宝物重量及价值 treasure = [{'w':2,'v':...

陶晨毅的学习笔记 3371

【AI就业干货12】机器学习八股文速通:从损失函数到 XGBoost,一篇带走全部面试点

本文总结了机器学习面试的核心知识点,涵盖监督与非监督学习、线性模型、正则化、决策树、KNN/K-means、SVM、集成学习、梯度下降、评估指标、特征工程、降维、概率模型等内容。重点包括:损失函数选择(MSE/交叉熵)、正则化作用(L1稀疏/L2平滑)、决策树划分准则、集成学习方法(Bagging降方差/Boosting降偏差)、XGBoost优化等。提供了30秒速记口诀和XGBoost代码示例,帮助快速掌握面试要点。全文采用公式+代码+口诀的形式,系统梳理了机器学习从理论到实践的常见考点。

m0_51738372的博客 731

python递归解决博物馆大盗问题

兄弟萌,话不多说,show me the code! # 初始化记忆表格m # key是(宝物组合,最大重量),value是最大价值 m = {} def thief(tr,w): if tr==set() or w==0: # turple是key的要求 m[(tuple(tr),w),w] = 0 return 0 elif (tuple(tr),w) in m: return m[(tuple(tr),w)] else:

sdhdsf132452的博客 353

置顶必读(1) | 2026最新首发,全网最全 Spring Boot 学习宝典(附思维导图)

从0到1以知识点+实例+项目的教学模式对SpringBoot框架由浅入深进行学习,快来跟bug菌一起学习吧。

**My Coding Family** 16万+

Palantir如何利用Ontology构建企业级数据地图

Palantir通过"本体论"(Ontology)技术构建动态数据地图,将多源异构数据转化为可操作的业务知识网络。该技术突破传统ETL模式,建立覆盖全组织的语义层,将原始数据映射为"客户""订单"等业务对象及其关联关系,形成可推理的语义网络。核心Foundry平台提供本体管理工具(OMA)和开发套件(OSDK),支持从数据连接到应用开发的全流程。虽然采用专有实现而非标准本体语言,但该架构成功解决了数据孤岛问题,赋能复杂决策分析

Learning 1792

记录一下python解决博物馆大盗问题

由于本人算法比较垃圾,动态规划 和 递归解决这个问题完全没有思路,于是用了一个十分投机取巧的解决办法,简单记录一下 from itertools import permutations # 引入全排列函数 max_w = 20 # 设置最大重量 all_v = [] # 全部的价值 def thief(aw, av, iter): tr = [[2, 3], [3, 4], [4, 8], [5, 8], [9, 10]] # 这是每件物体重量和价值 # 循环.

itquz 618

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

python学习之动态规划解决博物馆大盗问题

# 宝物的重量和价值 tr = [None, {'w': 2, 'v': 3}, {'w': 3, 'v': 4}, {'w': 4, 'v': 8}, {'w': 5, 'v': 8}, {'w': 9, 'v': 10} ] max_w = 20 # 初始化二维表格m{(i, w)} m = {(i, w): 0 for i in range(len(tr)) for w in range(max_w + 1)} for i in range(1, len(tr

noob9527的博客 442

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

数据结构与算法(python):动态规划案例分析

参考自 MOOC数据结构与算法Python版 目录一、博物馆大盗问题 一、博物馆大盗问题 大盗潜入博物馆, 面前有5件宝物, 分别有重量和价值, 大盗的背包仅能负重20公斤, 请问如何选择宝物, 总价值最高? item weight value 1 2 3 2 3 4 3 4 8 4 5 8 5 9 10 【思路】 我们把m(i,W)m(i, W)m(i,W)记为:前 iii (1<=i<=5)(1<=i<=5)(1<=i<=5)个宝物

番茄大人的博客 526

博物馆大盗问题

大盗潜入博物馆,面前有5件不同的宝物,每件宝物都分别有自己的重量和价值。大盗的背包仅能负重20KG,请问如何选择某几件宝物,使得总价值最高? 宝物item 重量weight 价值value 1 2 3 2 3 4 3 4 8 4 5 8 5 9 10 分析: 贪心策

我思故我在! 466

python 递归函数 三角形_数据结构-python(2)-递归

递归函数直接或间接调用函数本身,则该函数称为递归函数递归三要素:1) 递归算法必须有一个基本结束条件(最小规模问题时直接解决);2) 递归算法必须能改变状态向基本结束条件演进(不断缩小规模);3) 递归算法必须调用自身(解决减小了规模的相同问题);Python环境默认支持的递归层次可以通过以下命令查看:import sysprint(sys.getrecursionlimit())递归调用举例1-...

weixin_39929793的博客 852

北京大学《数据结构与算法(Python版)》笔记(上册)

北京大学陈斌老师课程详细笔记

Fransonia的博客 1569

数据结构与算法(Python版)——(3)递归(下)用实例介绍动态规划算法

目录1、分治策略 1、分治策略

Ma Sizhou 734

数据结构与算法python语言实现(三) 递归

本系列文章目录 展开/收起 数据结构与算法python语言实现(一) 算法分析 数据结构与算法python语言实现(二) 线性结构 数据结构与算法python语言实现(三) 递归 数据结构与算法python语言实现(四) 查找和排序 数据结构与算法python语言实现(五) 树 数据...

jqsfjqsf的博客 455

动态规划经典问题_python_leecode

博物馆大盗问题 tr = [None, {'w':2,"v":3}, {'w':3,"v":4}, {'w':4,"v":8}, {'w':5,"v":8}, {'w':9,"v":10}] # 题目要求 max_w = 20 # 初始化表格 table=[] for i in range(len(tr)): table.append([0]*max_w) for i in range(1, len(table)): for w in range(max_w):

qq_42138927的博客 243

圣人不死,大盗不止

——摘自七个心理寓言>  圣人不死,,大盗不止 客体关系理论认为,每个人的一生,最核心的争斗即是善与恶,或好与坏的争斗。每个人势必是视自己一部分“我”为善,为好,而将另一部分“我”视为恶,视为坏。每个人都想行“善”,并都以好人自居的,即便那些最凶残的江洋大盗或连环杀手,也是认

jeson1130的专栏 766
上一篇: 常见排序算法
下一篇: Nginx
sumatch
博客等级 码龄8年 251粉丝 59原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值