首页 > 其他分享 >01背包的推导

01背包的推导

时间:2025-01-17 12:32:34浏览次数:1  
标签:01 推导 容量 max 能装 背包 物品 dp

1.二维
背包容量为7,总共有四件物品,价值和重量表示为{v,w},它们的价值和重量分别是1{2,3},2{5,5},3{1,1},4{9,3},求背包最多能装多少
开始推导:
能装i个物品并选取前i个物品,背包容量为j。
dp[1][1]=0,显然是0,因为物品1的重量为3,你装答辩啊。
dp[1][2]=0,容量不够还是不行。
dp[1][3]=2,背包的容量刚好装的下物品1,获得该物品的价值2。
......
dp[1][7]=2,为什么省略?因为就装一个物品1,再怎么装还是2。

dp[2][1]=0,容量是1你装史呢。
dp[2][2]=0,装不了,因为他善。
dp[2][3]=2,能装物品1,但物品2还是塞不进去。
........为什么省略,因为容量小于5且只装前2个就只能塞个物品1进去。
dp[2][5]=5,此时有两个选择,两个物品肯定是塞不进去的,装物品1还是物品2?显然是物品2,因为它的价值更大。
dp[2][6]=5,dp[2][7]=5,容量小,无法同时装下前两个物品。

dp[3][1]=1,能装物品3。
dp[3][2]=1
dp[3][3]=?1?2?=2,可以装前三个,多了一个物品三,物品2装不下,只能在物品1和物品3选,显然装价值大的。
dp[3][4]=3,装物品1和物品3
dp[3][5]=5,选其中价值最大的,max(v[1],v[2],v[3],v[1]+v[3])=5,
dp[3][6]=6,此时面临多种选择,可行的方案归纳为max(v[1],v[2],v[3],v[1]+v[3],v[2]+v[3])=max(2,5,1,3,6)=6。
dp[3][7]=6,同理。

dp[4][1]=0,dp[4][2]=0。
dp[4][3]=9,显然是9,它比前面任何一个都大。
......
dp[4][4]=10,物品3和物品4。
.................同理
dp[4][7]=12,物品1+物品2+物品3。、
由此答案可得为12。
慢慢推太慢了,要发现其中的规律,发现每个局部答案都是从它前辈得来的,如dp[1][1]=0,dp[2][1]还是0,或是dp[2][5]=5,dp[3][5]=5,发现后者等于前者,其实你可以发现它们装的东西(决策)是一样的,后者也许面临多种选择但它的前身任然是最佳的,这算是一种继承,于是可得 \(dp[i][j]=dp[i-1][j]\)

看完的是这个

image

标签:01,推导,容量,max,能装,背包,物品,dp
From: https://www.cnblogs.com/TobyL/p/18676698

相关文章

  • 三层24千兆+4万兆光电可选网管型嵌入式交换机核心模块SW-24G4F-301EM
    先来解读一下标题,这是一款交换机核心模块,也就是交换机的核心部分模块化了;方便为了嵌入式集成;是管理型(也就是核心模块带了软件,对应底板结合自身板框,根据参考设计随性设计),还是三层管理;可以最多支持28个通信口,分别是24千兆+4万兆,接口的方式可以电口,也可以光口。可广泛应用于煤......
  • SQL-按自定义格式进行编号的SQL自定义函数.090119
    生成格式如:DT.EMP.0000000001的自增emp_id,加入EmpBaseINfo表中。--生成格式如DT.EMP.0000000001  【Vegas Add】ALTERFUNCTION[dbo].[Get_EmpBaseInfo_AccountID](@RowIDasint)RETURNSnvarchar(50) as begin    declare@oidnvarchar(50)    dec......
  • windows安装tomcat10.240108
    ​下载安装jdk17:jdk-17_windows-x64_bin.exe配置JAVA环境变量JAVA_HOME:C:\ProgramFiles\Java\jdk-17PATH:%Java_Home%\bin;%Java_Home%\jre\bin;拷贝tomcat10(下载地址:https://tomcat.apache.org/)到目录,设置环境变量CATALINA_HOME:D:\apache-tomcat-10.1.12PATH:%CATALINA......
  • 挖矿病毒的终极解决方法.201010
    1,编写sh脚本:rm_wk.sh#!/bin/bashPATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexportPATHkill-9$(ps-ef|grepkdevtmpfsi|grep-vgrep|awk'{print$2}')kill-9$(ps-ef|grepkinsing|grep-vgrep|awk'{pri......
  • Java初学者笔记-01、封装继承多态
    封装:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。通过封装,可以将类的信息隐藏在类内部,只暴露对外的接口(如setter和getter方法),从而提高代码的安全性和可维护性。继承:继承是从已有的类中派生出新的类的过程。新的类(子类)能够吸收已有类(父类)的数据属性和行为,并且可以......
  • Origin2018软件安装详细步骤(百度网盘)
    软件简介:Origin2018是由OriginLab公司开发等我,一款功能强大的科学绘图与数据分析软件,具有丰富的绘图模板、全面的数据分析功能以及便捷的操作方式。安装环境:Win11/Win10/Win8/Win7 百度网盘链接:https://pan.baidu.com/s/1Yxu6Iuo8LoQ685QD6TKHKQ 提取码:63e3安装......
  • 【2025-01-16】帮同事买陈皮
    20:00爱是一颗星,一切迷途的船只,虽然不懂得天文,却要靠它引导。                                                 ——威廉·莎士比亚今天我让老家的高中同学给我寄了一......
  • HCIA-01数据通信网络基础
    通信与网络网络通信基本概念网络通信:终端设备之间通过计算机网络进行的通信常用术语:数据载荷:最终想要传递的信息报文:网络中交换与传输的数据单元头部:在数据载荷的前面添加的信息段尾部:在数据载荷的后面添加的信息段封装:对数据载荷添加头部和尾部,形成新的报文的过程解封......
  • 01_初始化登录界面和注册界面
    01_初始化登录界面和注册界面标头注释模板header_comment/********************************************************************************@file%{CurrentDocument:FileName}*@briefXXXXFunction**@author雪与冰心丶*@date%{......
  • Babel Intro Babel - 01 Introduction
    Babel介绍Babel是一个编译器,主要用于将最新的JavaScript代码转化为向后兼容的代码,以便在老版本的浏览器或环境中运行。例如,你可能在开发时使用了ES6、ES7或者更高级的JavaScript特性,但是有些浏览器可能并不支持这些新特性,这时就可以用Babel来将代码转化为ES5或者更早......