我该如何解决这种经典的动态编程问题?

时间:2019-04-02 20:16:17

标签: dynamic-programming

有N家珠宝店。每个珠宝店都有三种硬币,分别是价值分别为A,B和C的金,白金和钻石。您决定去N个珠宝店的每一个,并从每个店中取硬币。但是要这样做,必须满足以下条件-

您最多可以从单个商店中取出1个硬币。 您最多可以携带X个金币。 您最多可以携带Y型白金硬币。 您最多可以带Z个Diamond类型的硬币。 您想以一种使商店的硬币价值最大化的方式从商店中收集硬币。

输入格式:

第一行包含一个整数N。其中N是珠宝店的数量。 第二行包含三个整数X,Y,Z。其中X,Y,Z表示分别可以收集的金,铂和钻石类型的最大硬币数量。 然后,N行包含三个以空格分隔的整数A,B,C。其中,A,B,C分别是金币,白金币和钻石币的价值。

输出格式:

打印一个整数,代表您可以获得的最大价值。

约束:

1 <= ñ <= 200

1 <= X , ÿ , ž <= N

1 <= 一种 , 乙 , C < 10 9

示例:-

4 2 1 1 5 4 5 4 3 2 10 9 7 8 2 9

答案:-

27(9 + 9 + 5 + 4)

我尝试了明显的贪婪方法,但失败了:-)

0 个答案:

没有答案