DP(动态编程)-从三重约束中找出最大和

时间:2019-03-31 18:57:47

标签: arrays algorithm recursion dynamic-programming

有N家商店拥有3种产品A,B和C,每种产品的价值在每个商店中可能都不同。您必须从这些商店购买产品,以使所购买产品的价值最大,但受到以下限制-您可以从商店购买最多1种产品,并且最多可以购买X种A型产品,最多Y种产品B型产品,最多Z型产品。找到可购买产品的最大值。

约束- N可以高达200,并且X,Y,Z始终小于或等于N

示例

N = 4

X = 2,Y = 2,Z = 2

Shop1-> 6 3 5 //在商店1中,产品A的成本为6,产品B的成本为3。

Shop2-> 7 1 8

Shop3-> 3 3 7

Shop4-> 1 7 9

答案-> 29(Shop1中的6 + Shop2中的7 + Shop3中的7 + Shop4中的9)

这里a = [6,7,3,1],b = [3,1,3,7],c = [5,8,7,9]

我尝试了一种递归解决方案-在每个商店,我们都可以买A或B或C或什么也买不到。但是N最多可以达到200,因此超时。另外,我不确定此解决方案是否正确。

您能帮助我提出优化的解决方案吗?

0 个答案:

没有答案