0/1/2背包问题的动态规划函数和递归表达式?

dbd27 2009-11-21 01:03:43
相信大家对0/1背包问题都很熟悉了,不过0/1/2背包问题呢?
也就是说,每种物品有两个。
动态规划函数和递归表达式应该怎样写?
...全文
644 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dbd27 2009-11-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 liuxiaoyi666 的回复:]
f(n,m)=max{f(n-1,m),f(n-1,m-v[n])+p[n],f(n-1,m-2v[n])+2p[n]}

这样就可以了.....貌似没想到有什么问题
[/Quote]

同意!
你的头像我很喜欢!
rebirth2009 2009-11-25
  • 打赏
  • 举报
回复
同意楼上的说法,O(∩_∩)O哈哈~
绿色夹克衫 2009-11-25
  • 打赏
  • 举报
回复
如果是求全解的话,解的数量导致了复杂度很难降低,跟普通背包的搜索没什么差别,也可以用3进制来模拟。

如果只是求最优的话,那就把每个物品分为2个,用以前的01背包解最简单。
  • 打赏
  • 举报
回复
f(n,m)=max{f(n-1,m),f(n-1,m-v[n])+p[n],f(n-1,m-2v[n])+2p[n]}

这样就可以了.....貌似没想到有什么问题
qiuzhenguang 2009-11-22
  • 打赏
  • 举报
回复
那其实还是0-1问题吧。
dbd27 2009-11-22
  • 打赏
  • 举报
回复
关键是动态规划函数不知道该怎么写。。
2009-11-22
  • 打赏
  • 举报
回复
或者理解为一个物品有三种选择,取 0/1/2 个。
和 0/1 背包每个阶段有两种选择实际上是一样的。
whg01 2009-11-21
  • 打赏
  • 举报
回复
每种物品有2个,可以看作是2个一样的物品。即把n个物品转为2n个物品即可。
绿色夹克衫 2009-11-21
  • 打赏
  • 举报
回复
啥叫012背包?
perfecttt 2009-11-21
  • 打赏
  • 举报
回复
刚了解了下背包问题,还真是挺好玩的,给个链接共享下。
http://baike.baidu.com/view/841810.htm?fr=ala0

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧