我正在研究动态编程,并希望解决以下问题,可以在这里找到http://www.cs.berkeley.edu/~vazirani/algorithms/chap6.pdf:
给你一块长方形布,尺寸为 X 乘 Y,其中 X 和 Y 是正整数,以及可以使用该布制作的 n 个产品的列表。对于 [1,n] 中的每个产品 i,您知道需要一个尺寸为 ai×bi 的矩形布,并且该产品的最终售价为 ci。假设 ai、bi 和 ci 都是正整数。您有一台机器可以将任何矩形布片水平或垂直切成两块。设计一种算法,找到切割 X 乘 Y 块布的最佳策略,以便由所得块制成的产品给出最大的销售价格总和。您可以随意制作任意数量的给定产品副本,如果需要,也可以不制作。(来自 Dasgupta、Papadimitriou 和 Vazirani 的算法。)
似乎我们有一种二维背包问题,但我认为可以通过将权重视为矩形的区域来使用传统的背包算法来解决它。这看起来是一种合理的方法吗?
这是我正在学习的课程的编程作业,因此请仅包含概念讨论和/或伪代码来说明想法。