0-1背包问题 ACWings题目链接:https://www.acwing.com/problem/content/2/

不会的小伙伴可以看一下视频:https://www.bilibili.com/video/BV15B4y1P7X7/

Python实现

# N件物品,一个容量为V的背包
N,V = map(int,input().split())
weight = []
val = []
# 创建两个列表,分别装入第i个物品的体积wi和价值vi
for _ in range(N):wi,vi = map(int,input().split())weight.append(wi)val.append(vi)
# base case: dp[0][...] = dp[...][0]=0
dp = [[0]*(V+1) for _ in range(N+1)] # (N+1)*(V+1)
# dp[i][w]代表对于前i个物品,当背包容量为w时,可以装的最大价值
for i in range(1,N+1):for w in range(1,V+1):"""if w-weight[i-1]<0:dp[i][w] = dp[i-1][w]else:dp[i][w] = max(# 装入物品i(下标对应在wight和val中是i-1),剩余的容量是 w-weight[i-1],# 则dp[i-1][w-weight[i-1]]对应的意思是,前i-1个物品,当背包容量抛去物品i之后可以装的最大价值dp[i-1][w-weight[i-1]]+val[i-1], # 不装入物品i,dp[i-1][w])"""# 简化版本dp[i][w] = dp[i-1][w]if w-weight[i-1]>=0:dp[i][w] = max(dp[i][w], dp[i-1][w-weight[i-1]]+val[i-1])
print(dp[N][V])

完全背包问题:(与01背包的区别在于完全背包中每种物品可以无限使用)
ACWings题目链接:https://www.acwing.com/problem/content/3/
很好的题解:https://www.acwing.com/solution/content/5345/

N,V = map(int,input().split())
weight = []
val = []
for _ in range(N):wi,vi = map(int,input().split())weight.append(wi)val.append(vi)
# dp[i][j]代表使用前i个物品,针对容量j的最大价值
# dp[0][...] 为0, dp[...][0]为0
dp = [[0]*(V+1) for _ in range(N+1)]
"""
超时做法:
for i in range(1,N+1):for j in range(1,V+1):for k in range(j//weight[i-1]+1):dp[i][j] = max(dp[i][j], dp[i-1][j-k*weight[i-1]]+k*val[i-1])
"""
for i in range(1,N+1):for j in range(1,V+1):dp[i][j] = dp[i-1][j]if j>=weight[i-1]:dp[i][j] = max(dp[i][j], dp[i][j-weight[i-1]]+val[i-1])
# print(dp)
print(max(dp[N]))

其实0-1背包和完全背包的代码只有一句不同(注意dp):
0-1背包:

dp[i][w] = dp[i-1][w]
if w-weight[i-1]>=0:dp[i][w] = max(dp[i][w], dp[i-1][w-weight[i-1]]+val[i-1])

完全背包:

dp[i][j] = dp[i-1][j]
if j>=weight[i-1]:dp[i][j] = max(dp[i][j], dp[i][j-weight[i-1]]+val[i-1])

0-1背包问题python实现相关推荐

  1. 令人头疼的背包九讲(1)0/1背包问题

    点击上方"Jerry的算法和NLP",选择"星标"公众号       重磅干货,第一时间送达 背包问题是一个经典的动态规划模型.它既简单形象容易理解,又在某种程 ...

  2. 0基础学python难吗-0基础学武汉Python开发课程有多难?该怎么入门?

    Python语言可谓十分强大,正如它的两个外号所称,一个是"内置电池",另一个是"胶水语言".开源社区和独立开发者长期为Python贡献了丰富大量的第三方库,其 ...

  3. 0基础学python难吗-0基础学Python有多难?该怎么入门?

    0基础学Python有多难?该怎么入门?零基础学Python并不难,因为Python是一门非常适合初学者入门的编程语言.Python语法简单明了,代码可读性很高,容易入门.但Python对代码的要求非 ...

  4. 0基础学python看什么书-0基础学Python入门书籍应该看什么?

    0基础学Python入门书籍应该看什么?Python 对不少人来说是谜一样的东西不知道如何下手.从何处下手,找了很多资源几个月过去了学习陷入换乱,没没能入门Python开发.出现这种情况大多是因为没有 ...

  5. python难学嘛-终于明白0基础学python难吗

    Python语言是一种典型的脚本语言,简洁,语法约束少,接近人类语言.有丰富的数据结构,例如列表.字典.集合等.具有可移植性,支持面向过程和面向对象编程,并且开源.以下是小编为你整理的0基础学pyth ...

  6. 自学python可以找到好的工作吗-27岁0基础自学Python,多久可以找到工作?

    原标题:27岁0基础自学Python,多久可以找到工作? 27岁零基础努力自学Python,多久或什么程度可以找到工作? 背景: 毕业近5年,至今仍无任何表面成绩,一开始做期货投机,后经营个体店(失败 ...

  7. 线上学python哪家好-0基础学python,打算找培训机构,是线上好还是线下好?

    谢邀,先不谈讨论线上还是线下更好,这个待会说. 我们先看一下题主的问题,0基础学Python,打算找培训机构,划重点了,这是0基础已经做好决定去培训了,我们就不要一直强调建议自学.自学,答不对题.就我 ...

  8. autumn 0.5.1 : Python Package Index

    autumn 0.5.1 : Python Package Index autumn 0.5.1 A minimal ORM

  9. python 内存溢出能捕获吗_从0基础学习Python (19)[面向对象开发过程中的异常(捕获异常~相关)]...

    从0基础学习Python (Day19) 面向对象开发过程中的=>异常 什么是异常 ​ 当程序在运行过程中出现的一些错误,或者语法逻辑出现问题,解释器此时无法继续正常执行了,反而出现了一些错误的 ...

  10. 0/1背包问题——动态规划方法

    1.定义 动态规划:把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解. 2.求解步骤 (1)找到状态转化条件 (2)归纳状态转移方程 (3)定义初始条件值 3.实例解析--0/1背包 ...

最新文章

  1. python中module的意思_python中module的意思
  2. 从 3.1 到 5.0 —— OpenReservation 更新记
  3. 学之思开源考试系统 - 使用手册
  4. 使用live555制作rtsp客户端,捕获h264等解码
  5. finalshell远程安装oracle,安装oracle的问题
  6. vba传值调用_vba – 动态调用从形状OnAction属性传递参数的宏
  7. git eclipse 取消误操作 ignore(忽略)文件
  8. 0xc000007b——应用程序无法正常启动解决办法
  9. maya扇子动画_maya变形金刚全流程动画教学(永久有效)
  10. Codeforces 2 A. Winner
  11. 阿昌教你Linux密码忘记后如何重置
  12. 数字图像处理课程设计
  13. 《C专家编程》:编译器的金科玉律(一)
  14. 矩阵基变换和坐标变换
  15. IOTOS物联中台从0到1开发modbus_rtu驱动 实例详解
  16. 炫酷按钮《html》
  17. 音乐格式转换软件测试工程师,音频格式转换器如何转换音频格式(新手教程)
  18. 电路的升压(boost)5-12v,降压(buck)和电荷泵
  19. Canvas + WebGL中文艺术字渲染
  20. Red Hat Enterprise Linux 7 高薪运维入门 - 孙亚南、李勇

热门文章

  1. 12c oracle 修改内存_Oracle 12C 内存数据库测试
  2. eclipse的web工程中导入jir包如何放到lib目录中
  3. 第四章 STM32+LD3320+SYN6288+DHT11实现语音获取温湿度数值(上)
  4. 大数据开发:MongoDB系统架构简介
  5. Unity3D游戏美术全攻略:从入门到精通
  6. 一些关于语音识别和语音情感识别的资源
  7. SpringData JPA 之疑难杂症
  8. 面试前妹妹过世,美国男子收到谷歌的慰问信
  9. 政务大数据系列9:政务大数据的价值链
  10. 数字图像处理:视觉概述