社区
C++ 语言
帖子详情
有W1。W2....Wn重量的物品。装到一个能装T重的的背包里。从里面选择出一些物品使其重量正好为T
charlesli2004
2004-10-12 11:09:51
如题,好象是数据结构方面的
...全文
253
5
打赏
收藏
有W1。W2....Wn重量的物品。装到一个能装T重的的背包里。从里面选择出一些物品使其重量正好为T
如题,好象是数据结构方面的
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
charlesli2004
2004-10-13
打赏
举报
回复
再T
steel007
2004-10-13
打赏
举报
回复
Greedy应该能搞出来`
snipersu
2004-10-13
打赏
举报
回复
背包问题,一般是能够最接近T
但是你要求正好为T恐怕不太能正好达到,除非你的包的重量都是2的i次方的数(i=0,1,...,N).
到网上搜搜吧!
爱饮四坛
2004-10-13
打赏
举报
回复
这是高级程序员经常考的题,你找一本高程的书,上面有完整的代码及解释。
jp1984
2004-10-12
打赏
举报
回复
背包问题不是 0-1背包
the weight of each item can be divided
using Greedy paradigm instead of dp
背包
问题祥解.doc
在中国,
背包
问题一般是这样描述的:设n个
重
量
为(
W1
,
W2
,...
Wn
)的
物品
和
一个
载
重
为S的
背包
,将
物品
的一部分xi放进
背包
中的利润是Pixi,问如何
选择
物品
的种类和数量,使得
背包
装满而获得最大的利润?另有一简化版本说:设有
一个
背包
可以放入的
物品
重
量
为S,现有n件
物品
,
重
量
分别为
W1
,
W2
,...
Wn
。问能否从这n件
物品
中
选择
若干件放入此
背包
,使得放入的
重
量
之和
正好
为S。
基础
背包
问题和01
背包
问题
1)
一个
简化的
背包
问题:
一个
背包
能装
总
重
量
为 tota1_m,现有 n 个物件,其
重
量
分别为(
W1
、
W2
、…、
Wn
)。问能否从这 n 个物件中挑选若干个物件放入
背包
中,使其总
重
量
正好
为 T ?若有解则给
出
全部解,否则输
出
无解。 1)输入要求:从键盘输入依次输入n种物体的
重
量
w1
、
w2
、…、
wn
和价值p1、p2、…、pn,输入
背包
总
重
量
T。
重
量
和价值在同一行。 2)功能要求:
一个
背包
能装
入
物品
的总
重
量
为T,现有n种
物品
,每种
物品
若干件,每种
物品
的
重
量
分别为
w1
、
w2
、…、
wn
,且每件对应的价值分别为p1、p2、…、pn。编写法实现从这n种
物品
中挑选若干件,每种
物品
根据自己的存货可选若干件,使其
重
量
之和不超过T而走总价值最大。 3)01
背包
问题
背包
问题的求解,有二道题
问题描述: 假设有
一个
能装
入总体积为T的
背包
和n件体积分别为
w1
,
w2
, … ,
wn
的
物品
,能否从n件
物品
中挑选若干件恰好装满
背包
,即使
w1
+
w2
+ … +
wn
=T,要求找
出
所有满足上述条件的解。例如:当T=10,各件
物品
的体积{1,8,4,3,5,2}时,可找到下列4组解: (1,4,3,2) (1,4,5) (8,2) (3,5,2)。 问题提示: 可利用回溯法的设计思想来解决
背包
问题。首先将
物品
排成一列,然后顺序选取
物品
装入
背包
,假设已选取了前i 件
物品
之后
背包
还没有装满,则继续选取第i+1件
物品
,若该件
物品
"太大"不
能装
入,则弃之而继续选取下一件,直至
背包
装满为止。但如果在剩余的
物品
中找不到合适的
物品
以填满
背包
,则说明"刚刚"装入
背包
的那件
物品
"不合适",应将它取
出
"弃之一边",继续再从"它之后"的
物品
中选取,如此
重
复,直至求得满足条件的解,或者无解。 题目之二: 问题描述: 假设有n件
物品
,这些
物品
的
重
量
分别是
W1
,
W2
, … ,
Wn
,
物品
的价值分别是V1,V2, …,Vn。求从这n件
物品
中选取一部分
物品
的方案,使得所选中的
物品
的总
重
量
不超过限定的
重
量
W(W<∑Wi, i=1,2,┅,n),但所选中的
物品
价值之和为最大。 问题提示: 利用递归寻找
物品
的
选择
方案。假设前面已有了多种
选择
的方案,并保留了其中总价值最大的方案于数组option[]中,该方案的总价值保存于变量max_value中。当前正在考察新方案,其
物品
选择
情况保存于数组eop[]中。假设当前方案已考虑了i-1件
物品
,现在要考虑第i件
物品
:当前方案已包含的
物品
的
重
量
之和为tw;因此,若其余
物品
都
选择
是可能的话,本方案所能达到的总价值的期望值设为tv。引入tv是当一旦当前方案的总价值的期望值也小于前面方案的总价值max_value时,继续考察当前方案已无意义,应终止当前方案而去考察下
一个
方案。 第i件
物品
的
选择
有两种可能: ①
物品
i被
选择
。这种可能性仅当包含它不会超过方案总
重
量
的限制才是可行的。选中之后继续递归去考虑其余
物品
的
选择
; ②
物品
i不被
选择
。这种可能性仅当不包含
物品
i也有可能找到价值更大的方案的情况。
数据结构——
背包
问题
假设有
一个
能装
入总体积为T的
背包
和n件体积分别为
W1
,
W2
,···,
Wn
的
物品
,能否从n件
物品
中挑选若干件恰好装满
背包
,即使
W1
+
W2
+···+
Wn
=T,要求找
出
所有满足上述条件的解。例如:当T=10,共6件
物品
,
物品
的体积为{1,2,3,4,5,8},那么可找到下列4组解:(1,2,3,4)、(1,4,5)、(2,3,5)、(2、8)。
ACM OJ 小偷的
背包
设有
一个
背包
可以放入的
物品
重
量
为S,现有n件
物品
,
重
量
分别是
w1
,
w2
,w3,…
wn
。问能否从这n件
物品
中
选择
若干件放入
背包
中,使得放入的
重
量
之和
正好
为S。如果有满足条件的
选择
,则此
背包
有解,否则此
背包
问题无解。
C++ 语言
64,646
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章