当有超过 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 < 5),所以我们选择了它。我不仅要查明是否存在这样的记录集,还要找到我总结的记录。
但现在,我只需要了解 3d 数组会是什么样子。你们中的一些人能帮我解决这个问题,并像我的形象一样,一层一层地展示,这会是什么样子?谢谢。