我有这个问题,我想解决。我有 n 个项目,每个项目都有一个值 v 放在一行中。然后我有k个监督项,位置x的一个监督项可以监督x-1,x,x+1项。我要计算的是 k 主管可以使用动态编程监督的最大值。
例如。n = {1,2,3,4} v = {7,10,5,8} 这意味着职位 1 -> 17 的主管的总价值(可以覆盖 n = 1 和 2)。
位置 2 -> 22(可以覆盖 n = 1,2,3)。
位置 3 -> 23(可以覆盖 n = 2,3,4)。
位置 4 -> 19(可以覆盖 n = 3,4)。
那么如何计算给定数量的supervisor可以覆盖的最大值呢?
在这个例子中,有 1 个主管,我们得到最大值 23,有 2 个我们得到 36(选择 1 和 4),之后我们不能做得更好,因为所有项目都被覆盖了。
我曾尝试利用背包问题,但后来我陷入了如何解决覆盖重叠的问题。
我也尝试使用加权间隔调度问题,但它仅适用于计算可能的总最大值而不是 k 间隔的最大值。
我非常感谢有关如何使用动态编程解决此问题的任何提示。