【发布时间】:2011-12-16 17:26:56
【问题描述】:
好像
最大重量 3
Value Weight
1955 1
2000 5
101 1
拿第一和第三。但找不到总价值。 1955+101。
我使用背包 0-1。有没有办法从数组中找到1955+101
【问题讨论】:
-
当然,您必须通过 DP 矩阵回溯并重建选择。网上有大量的描述。缺点是您需要保留整个矩阵;如果您不想这样做,您可以通过只保留一小部分数据来节省空间。
-
你能告诉我算法吗?我尝试搜索但没有找到
-
不是在我的脑海中,但如果你愿意,请自己考虑......它应该是显而易见的事情。否则尝试维基百科;我很确定有它(至少关于最长公共子序列的文章有类似的代码)。
-
@zeulb this question 展示了如何从构造的矩阵中找到为您提供背包问题最佳解决方案的确切元素。
标签: c++ algorithm dynamic-programming knapsack-problem