Хорошая задача на динамическое программирование, без каких-либо подводных камней. Читаем условие: Как часто бывает в задачах на динамическое программирование, основная сложность заключается в придумывании рекуррентного соотношения и понимании принципа работы, а не в написании кода (потому что обычно в них один или два цикла, просто заполняющие массив). Поэтому давайте сконцентрируемся на методе решения. Для начала надо определить, что будет состоянием в динамике. В данной задаче с этим нет проблем - это номер платформы, на которой стоит герой. Для каждого возможного состояния мы будем считать минимальную количество энергии, которое надо потратить, чтобы в нём оказаться. Чтобы посчитать ответ для состояния i, надо рассмотреть все переходы, откуда мы могли в него придти: И среди всех этих возможностей надо выбрать оптимальный переход, то есть с минимальными затратами энергии. Давайте реализуем это решение. Сначала считаем входные данные: Заметим, что количество платформ однозначно можно