Как я могу решить эту классическую проблему динамического программирования? - PullRequest
1 голос
/ 02 апреля 2019

Есть N ювелирных магазинов.В каждом ювелирном магазине есть три вида монет - золото, платина и бриллиант, имеющие значения A, B и C соответственно.Вы решили пойти в каждый из N ювелирных магазинов и взять монеты из каждого магазина.Но для этого должны соблюдаться следующие условия:

1002 * Вы можете взять не более 1 монеты из отдельного магазина.Вы можете взять не более X монет золотого типа.Вы можете взять не более Y монет платинового типа.Вы можете взять не более Z монет типа Diamond.Вы хотите собирать монеты в магазинах таким образом, чтобы ценность собранных монет была максимальной.

Формат ввода:

В первой строке записано целое число N. Где N - количество украшениймагазины.Вторая строка содержит три целых числа X, Y, Z. Где X, Y, Z обозначает максимальное количество монет, которые вы можете собрать, типа Gold, Platinum и diamond, соответственно.Тогда N строк содержат три разделенных пробелом целых числа A, B, C. Где A, B, C - ценность достоинства золотой, платиновой и бриллиантовой монет соответственно.

Формат вывода:

Выведите единственное целое число, представляющее максимальное значение, которое вы можете получить.

Ограничения:

1 <= N <= 200 </p>

1 <= X, Y, Z <= N </p>

1 <= A, B, C <10 9 </p>

Пример: -

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

Ответ: -

27 (9 + 9 + 5 + 4)

Я попробовал очевидный жадный подход, но он не удался: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...