ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 10110|回复: 33

[求助] 背包问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-6-18 08:57 | 显示全部楼层 |阅读模式
本帖最后由 jsgj2023 于 2017-6-18 13:36 编辑

有n件物品,第i件物品的重量为c,价格为w,
有一个承重为m的书包,求解将哪些物品装进书包,
使得物品不超重且价格最高.
每种物品只有一件,有放入书包和不放入书包两种状态.


测试数据:
m=10,n=3,
物品重量c[1]=3,c[2]=4,c[3]=5;
物品价格分别为:w[1]=4,w[2]=5,w[3]=6.



TA的精华主题

TA的得分主题

发表于 2017-6-18 12:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
感觉要用组合.................................................................................

TA的精华主题

TA的得分主题

发表于 2017-6-18 13:27 | 显示全部楼层
如果数据量小,直接组合遍历求最大值即可。

如果数据量大,那么随机凑满重量以后,遍历检查调整交换即可。(1 vs 1,1 vs 2,2 vs 2)

…………如果有数据例子,可以编程验证。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-6-18 13:38 | 显示全部楼层
香川群子 发表于 2017-6-18 13:27
如果数据量小,直接组合遍历求最大值即可。

如果数据量大,那么随机凑满重量以后,遍历检查调整交换即可 ...

已提供测试数据,老师有空请看看!

TA的精华主题

TA的得分主题

发表于 2017-6-18 14:46 | 显示全部楼层
背包问题的经典解答是动态规划……

TA的精华主题

TA的得分主题

发表于 2017-6-18 14:52 | 显示全部楼层
jsgj2023 发表于 2017-6-18 13:38
已提供测试数据,老师有空请看看!

整明白算法原理,写代码就不是什么问题了。
http://blog.csdn.net/mu399/article/details/7722810

TA的精华主题

TA的得分主题

发表于 2017-6-18 22:01 | 显示全部楼层
本帖最后由 香川群子 于 2017-6-19 14:54 编辑

我是按照我自己的思路来做的。

背包问题2.zip

16.67 KB, 下载次数: 92

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-6-19 14:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
三坛老窖 发表于 2017-6-18 14:52
整明白算法原理,写代码就不是什么问题了。
http://blog.csdn.net/mu399/article/details/7722810

这个算法原理,还是要使用递归检查吧。你有现成的VBA代码吗?如有请提供学习。

我认为,如果数据量很大,难以高效运行。

TA的精华主题

TA的得分主题

发表于 2017-6-19 15:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-6-19 16:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 三坛老窖 于 2017-6-19 16:08 编辑
香川群子 发表于 2017-6-19 14:46
这个算法原理,还是要使用递归检查吧。你有现成的VBA代码吗?如有请提供学习。

我认为,如果数据量很 ...

你自创的算法得到的结果,不是最优解,且耗时上也没有优势。
我附件中的代码是严格按照链接中的原理写的,能得到最优解,且用你提供的数据,耗时也少于你的代码。
如果数据量大(背包容量大或物品数量多),可用动态规划原理变通解决耗时和内存占用的问题。
DP_01背包.rar (554.29 KB, 下载次数: 171)

评分

3

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-28 01:56 , Processed in 0.057518 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表