博物馆大盗问题 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

Kali Linux实战:5种局域网DoS攻击手法全解析(附防御方案)

本文以Kali Linux为平台,深入解析了局域网内五种典型的DoS攻击手法,包括TCP SYN Flood、ICMP Flood、MAC地址泛洪、DHCP耗尽以及应用层CC攻击模拟。通过实战演示结合Wireshark抓包分析,清晰揭示了攻击原理与流量特征,并提供了从主机加固、防火墙规则到交换机安全配置(如端口安全、DHCP Snooping)等企业级防御方案,旨在帮助安全人员构建纵深防御体系。

weixin_29313423的博客 396

从原理图到代码:深入解析SX1278 LoRa模块与STM32的SPI通信驱动(附完整工程)

本文深入解析了SX1278 LoRa模块与STM32的SPI通信驱动实现,从硬件原理图到完整工程代码,详细介绍了LoRa技术的通信原理、寄存器配置、SPI接口设计及低功耗优化策略。适合物联网开发者和嵌入式工程师提升远距离无线通信能力,附完整工程代码助力快速开发。

weixin_42715608的博客 423

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

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

qq_46398951的博客 880

基于灰度信息的图像配准方法

图像配准方法分为三种:基于灰度信息方法、基于变换域方法和基于特征方法。基于灰度信息方法是直接根据图像或图像块灰度信息进行像素上的对齐,该方法主要思想是直接最小化图像信息差异。然而,图像信息差异的判断准则衍生出不同的配准方法。常见的基于灰度信息的图像配准方法包括互相关法、互信息法和误差平方和法。本节将分别对互相关法、互信息法和误差平方和算法展开介绍,并通过MATLAB进行演示。基于灰度的图像方法容易实现,但同样存在不足。该方法对成像条件(光照,遮挡)、图像形变旋转以及噪声极其敏感,同时具有较高的计算复杂度。

weixin_42068054的博客 3775

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

# 宝物的重量和价值 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

AI辅助专利撰写实战:用Codex 30分钟生成发明专利初稿

这次我们来看一个用 Codex 从零开始撰写发明专利的实战项目。对于技术研发人员、产品经理或初创团队来说,专利申请是保护创新成果、构建技术壁垒的关键一步。然而,撰写一份高质量的专利申请书,尤其是权利要求书和说明书,往往需要专业的法律和技术语言,耗时耗力。这个项目演示了如何利用 AI 工具 Codex,在短时间内生成一份结构完整、逻辑清晰、具备授权潜力的专利申请文件初稿。 整个过程的核心不是让 AI 完全替代专利代理人,而是将其作为强大的“技术翻译”和“内容生成”助手。它能将你的技术构思、流程图、核心算法或产

weixin_32181267的博客 414

PADS Logic VX2.5元件绘制全流程:从零开始创建自定义元件库

本文详细介绍了在PADS Logic VX2.5中从零开始创建自定义元件库的全流程。内容包括理解PADS独特的四库分立结构、绘制原理图符号(CAE封装)、关联PCB封装、创建元件类型以及最终的调用验证。掌握元件绘制技能能从根本上提升设计效率、确保设计规范统一,并从源头杜绝原理图与PCB之间的关联错误,是硬件工程师必备的核心能力。

oo7890的博客 441

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

0基础学习diffusion_model扩散模型【易理解的公式推导】Denoising Diffusion Probabilistic Models

去噪扩散概率模型。本文是笔者在学习扩散模型时的一些笔记与心得,在公式推导过程中能够保证自己是一步一步去推导并且理解了的。概述是我认为比较重要的部分能够帮助理解公式的推导,具体的公式推导在每一小节中进行。1、扩散过程:如上图所示,扩散过程为从右到左X0→XTX0​→XT​的过程,表示对图片逐渐加噪,且Xt1X_{t+1}Xt1​是在XtX_{t}Xt​加躁得到的,其只受XtX_{t}Xt​的影响,因此扩散过程是一个马尔科夫过程。X0X_0。

zik的博客 2397

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

【华为OD技术面试真题 - 技术面】- python面试题(1)

华为OD面试技术面准备指南 华为OD面试技术面常见问题解答 华为OD面试技术面经验分享 华为OD面试技术面注意事项 华为OD面试技术面攻略 华为OD面试技术面模拟题目与解析 华为OD面试技术面知识点梳理 华为OD面试技术面常考

算法大师! 5532

【OpenClaw从入门到精通】第07篇:2026实测!零基础开发OpenClaw自定义Skill——招聘外呼自动邀约完整教程

本文聚焦OpenClaw自定义Skill开发全流程,针对现成技能无法满足个性化场景(如专属招聘流程、内部系统对接)的痛点,以“招聘外呼自动邀约”为实战案例,从概念认知、环境搭建、分步开发到测试优化,手把手教读者从零构建自定义Skill。内容涵盖Skill目录结构、SKILL.md核心配置、Python主逻辑实现、API对接、安全配置等关键环节,融入2026年ClawHavoc事件安全警示,强调最小权限、凭证安全等开发原则。所有代码经实测可运行,步骤详尽且兼顾新手友好与进阶需求。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1193

记录一下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

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

数据结构与算法(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

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

博物馆大盗问题

大盗潜入博物馆,面前有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、付费专栏及课程。

余额充值