【发布时间】:2012-11-18 22:44:36
【问题描述】:
当有超过 1 个属性时,我无法理解背包问题。 当有 1 个属性时,
我必须编写一个使用具有 2 个属性的背包算法的程序。老师告诉我们,它必须在一个 3d 数组中完成。错误的实现将导致 O(2^n) 处理时间。我无法想象这样的数组会是什么样子。
假设这是我的输入:
4 3 4 // number of records below, 1st property of backpack, 2nd property of backpack
1 1 1 // 1st property, 2nd property, cost
1 2 2 // 1st property, 2nd property, cost
2 3 3 // 1st property, 2nd property, cost
3 4 5 // 1st property, 2nd property, cost
输出看起来像这样:
4 // the cheapest sum of costs of 2 records
1 3 // numbers of these 2 records
输出说明: 2 组记录适合第一行输入:
(1) - 记录号 1 和记录号 3
1 1 1
+ 2 3 3
-------
3 4 4
(2) - 记录号 4
3 4 5
因为第一组记录是最便宜的(4
但现在,我只需要了解 3d 数组会是什么样子。你们中的一些人能帮我解决这个问题,并一层一层地展示,就像我的形象一样,这会是什么样子? 谢谢。
【问题讨论】:
-
你的问题很模糊。 “看起来”是什么意思?你的意思是视觉表现吗?您是指模拟 3d 数组的代码吗?
-
抱歉。我提到视觉表示。一旦我了解它是如何工作的,我会自己实现它。
-
请为更简单的问题发布一些代码(带有 1 个属性)。还有,第一张图中数组里面的数字代表什么?
标签: algorithm dynamic-programming knapsack-problem