我有几种类型的硬币,每种都有重量(wi)和成本(ci)。所以我必须做一个背包,重量== W和(!)硬币的最低成本。我不能让使用DP的复发关系。最低成本的背包
最低成本的背包
回答
就制定通常递推关系...
标明用总重k作为Min_cost(K)实现最小成本。
引导与记忆化:
Min_cost(0) = cost of empty set = 0
然后解决了使用增加k的取值情况:
Min_cost(i+1) = min [Min_cost(i) + min [ci, for all items with wi = 1],
Min_cost(i-1) + min [ci, for all items with wi = 2],
Min_cost(i-2) + min [ci, for all items with wi = 3],
...
Min_cost(2) + min [ci, for all items with wi = w-1],
Min_cost(1) + min [ci, for all items with wi = w],
Min_cost(0) + min [ci, for all items with wi = w+1]]
如果没有当前wi的元素,在这种情况下如何找到min [ci,对于wi = 1的所有项目]?例如W = 100和2种类型的项目:w1 = 1 c1 = 1; w2 = 50 c2 = 30,所以这里的答案应该是60,我不能用你的算法得到它。你能更好地解释你的想法吗? – user2178460 2013-03-17 07:51:39
如果没有wi = 1的项目,那么对于重复中所有wi = 1行的项目,您不能拥有Min_cost(i)+ min [ci,因为这些项目不存在。至于相同类型的多个硬币,每个硬币的数量是多少?因为Min_cost(50)= min [Min_cost(49)+ c1,Min_cost(0)+ c2),直到你计算Min_cost(50),此时它将切换到c2, ] = min [49 + 1,0 + 30] = 30'。在W = 90时,你会得到Min_cost(100)= 60。顺便说一下,这看起来像一个算法分配...希望你没有使用StackOverflow作业:) – 2013-03-17 08:04:56
好吧,现在已经很清楚了。谢谢。 – user2178460 2013-03-17 08:14:32
- 1. 背包的变化 - 确切重量的最低总成本
- 2. 返回最低成本!
- 3. 需要R包的最低版本
- 4. 找到物品的最佳组合,以最低的成本。也许背包变种?
- 5. 成本最低的Windows VPS托管?
- 6. 收发器网络的最低成本
- 7. 仅选择最低成本的行
- 8. 标签顶点打造最低成本
- 9. 如何找到最低成本?
- 10. 最低成本路径障碍(R)(gdistance)
- 11. 建立网站最快,维护成本最低的方法?
- 12. Android SDK所需的最低软件包
- 13. 发布严格要求最低节点版本的npm包
- 14. 查找乘船的成本最低,使用递归和缓存
- 15. 从n个桶中选择物品的最低成本
- 16. 蟒蛇一次检查各种平等的最低成本
- 17. 背包查找最大值
- 18. Tensorflow:何时停止由于最佳(最低)成本而进行的培训?
- 19. 通过消除负循环来寻找最低成本循环
- 20. 如何在2D矩阵中找到最低成本路径
- 21. 搜索加权图形,最低成本,记得路线
- 22. 选择贪婪算法找到最低成本路径
- 23. JAX-RS 1.1的最低Servlet API版本
- 24. 强制执行最低版本的Maven
- 25. 支持C++的最低iOS版本0x
- 26. 最低要求的版本管理
- 27. 友好的Windows最低版本中InnoSetup
- 28. 确定最低要求的PHP版本
- 29. Phusion Passenger的Apache最低版本
- 30. 使用jqGrid的最低jQuery版本
你的意思是你被允许做的关系? – 2013-03-17 03:23:08
我必须做一个关系,或者如何在没有它的情况下使用DP? – user2178460 2013-03-17 03:25:26