问题描述:给定n种物品和一背包。物品i的重量是wi,体积是bi,其价值为vi,背包的容量为C,容积为D。问:应该如何选择装入背包种的物品,使得总价值最大?

其实,这就是一维0-1背包问题的推广,二维背包问题,只要我们把二维背包问题解决了,n维背包问题也就解决了。

二维背包问题,只不过是多加了一个体积的限制条件,那么在纬度上我们需要多加一个纬度,用来衡量体积,具体代码如下:

w = [3, 2, 4]
b = [2, 4, 3]
v = [3, 2, 5]
w_most = 7
b_most = 7def bag_0_1(w, b, v, w_most, b_most):bag_num = len(w)w.insert(0, 0)b.insert(0, 0)v.insert(0, 0)dp_table = np.zeros((bag_num+1, w_most+1, b_most+1), np.int)for i in range(1, bag_num+1):for j in range(1, w_most+1):for k in range(1, b_most+1):if w[i] <= j and b[i] <= k:dp_table[i][j][k] = max(dp_table[i-1][j][k], dp_table[i-1][j-w[i]][k-b[i]] + v[i])else:dp_table[i][j][k] = dp_table[i-1][j][k]return dp_table
a = bag_0_1(w, b, v, w_most, b_most)
print(a)
print(a.max())

结果如下:

python 解决 0-1 二维背包问题相关推荐

  1. MATLAB在运筹学背包问题的应用,运筹学论文之二维背包问题.docx

    运筹学论文之二维背包问题.docx 运筹学课程2011年12月论文评价指标与鉴定意见整数规划之二维背包问题摘要随着经济的增长,人们的体育生活也越来越丰富多彩,登山,成为人们的一种时尚.本文运用动态规划 ...

  2. python随机生成二维列表_对python产生随机的二维数组实例详解

    对python产生随机的二维数组实例详解 最近找遍了python的各个函数发现无法直接生成随机的二维数组,其中包括random()相关的各种方法,都没有得到想要的结果.最后在一篇博客中受到启发,通过列 ...

  3. 使用Python制作酷炫二维码(myqr)

    使用Python制作酷炫二维码 本篇参考自微信公众号,二三四张图片有改博主知乎的链接哦,https://mp.weixin.qq.com/s/Fq6_KKeN5T28DbfyDsGYDw 平时你见到的 ...

  4. 有一个人前来买瓜 | C++ | 二维背包问题

    提醒:这道题目你会不会做,看不看得懂其他大佬的做法,完全取决于你看没看过背包问题,懂不懂背包问题的基本逻辑原理.换言之,只要你会背包,自己做出来不是难题. (因为我身边好多人包括我,一开始都不清楚背包 ...

  5. 使用Python,Opencv进行二维直方图的计算及绘制

    使用Python,Opencv进行二维直方图的计算及绘制 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用Python,Opencv进行二维直方图的计算及绘制(分别用Opencv和Numpy计算 ...

  6. python怎么画简单图片-Python绘制简易的二维图像

    大家好,我是飞向天空的牛. 最近学习了一下用Python绘制简易的二维图像,代码如下图所示:绘图代码 文本如下: import matplotlib.pyplot as plt import nump ...

  7. go二维map_mirrorlang——从0设计二维内存寻址语言及vm(五.内存管理的思考)

    目录 鹏鹏李李:mirrorlang--从0设计二维内存寻址语言及vm [目录]​zhuanlan.zhihu.com 由一段函数开始思考内存布局 func longestPalindrome(s s ...

  8. 动态规划——1292:宠物小精灵之收服(二维背包问题)

    1292:宠物小精灵之收服 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 6298 通过数: 3921 [题目描述] 宠物小精灵是一部讲述小智和他的搭档皮卡丘一起冒险的故事. 一 ...

  9. 【机器学习】python使用matplotlib进行二维数据绘图并保存为png图片

    端到端机器学习导航: [机器学习]python借助pandas加载并显示csv数据文件,并绘制直方图 [机器学习]python使用matplotlib进行二维数据绘图并保存为png图片 [机器学习]p ...

最新文章

  1. Ubuntu NFS服务器的配置
  2. 深度学习——02、深度学习入门 8-14
  3. 专为小机械迷而造,培养STEM思维,千万别错过!物理机械力学知识边玩边学,5岁以上请入手...
  4. 公式之美:打通复杂思维的任督二脉
  5. 12月25日服务器例行维护公告,12月25日维护公告 技能修改测试
  6. 从RedHat到MongoDB,开源商业软件是如何占领世界的
  7. ora-12505报错解决方法(转)
  8. 取PE文件OriginalFilename-解析VERSION资源
  9. cobar mysql 性能,Cobar + MySQL 技術驗證(li)
  10. 10247: 爱好数学的国王(唯一分解定理)
  11. 在IPCAM上实现RTSP协议直播-live555
  12. PaddlePaddle笔记4-看图写诗
  13. 如何知道php是32位还是64位,怎么看电脑是32位还是64位详细介绍
  14. 新版 Win10 来了!网友:要被丑哭了。。。
  15. 2的一百万次方 用计算机算,1M换算:计算机里,单位里1.大家都知道数字1M=10^6对吧(M=Million),以10为底,6次方 2.计算机里1...
  16. 为何公司招聘了IT人才,还要找专业的网络公司建设网站?
  17. Google Earth Engine(GEE)提取水体
  18. 史上最实用的文字转语音软件,没有之一
  19. 3d打印光固化好还是热固化好_创想三维再添重磅光固化3D打印机 LD-006大尺寸高精度-创想三维 LD-003_深圳3D打印机行情...
  20. 什么是QPYcom开源?

热门文章

  1. Revit 命令添加下拉框
  2. 浅谈商城站点如何创造价值
  3. 没有电池没有芯片,这些塑料瓶子正在联网
  4. 抽象代数之群同态基本定理的证明之群同态的核是群G的正规子群
  5. 关于地铁查询系统的总结
  6. 【git】忽略文件两种方式
  7. 带你渐入佳境,一文捋清协程
  8. 有关日期参数匹配数据库数据的方法
  9. 腾讯云技术公开课:公有云架构演进之路
  10. 供应链金融的三种模式分析