Ctrl K

Прибыль при ограниченном числе сделок

Сложная
Вы знаете курс монеты на ближайшие дни: rates[i] — её цена в день i. Сделка — это покупка монеты и её последующая продажа. На руках одновременно может быть не больше одной монеты: новую можно купить только после продажи предыдущей (в тот же день — можно). Разрешено совершить не больше max_trades сделок. Верните наибольшую суммарную прибыль; если заработать нельзя, верните 0.
Пример 1
max_trades=2, rates=[5, 1, 4, 2, 8, 3, 6] → 10

Купить за 1, продать за 8 (+7); купить за 3, продать за 6 (+3). Итого 10. Сделки 1 → 4 и 2 → 8 дали бы только 9.

Пример 2
max_trades=1, rates=[3, 7, 2, 6] → 4

Лучшая одиночная сделка — 3 → 7 или 2 → 6, обе дают 4.

Пример 3
max_trades=4, rates=[10] → 0
Ограничения
  • 1 ≤ max_trades ≤ 100
  • 1 ≤ len(rates) ≤ 1000
  • 0 ≤ rates[i] ≤ 1000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВода между стенами СложнаяСамый большой горящий блок СложнаяПрибыль за две сделки СложнаяВсе способы расставить пробелы СложнаяПереход через пещеру Сложная
загружаем Python…
Вход
max_trades=2, rates=[5, 1, 4, 2, 8, 3, 6]
Ожидается
10

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 98 тестов на сервере, включая скрытые.