Вы можете вспомнить хоть одного своего знакомого до двадцатилетнего возраста, который в...
Вы можете вспомнить хоть одного своего знакомого до двадцатилетнего возраста, который в детстве не играл в компьютерные игры? Если да, то может быть вы и сами не знакомы с этим развлечением? Впрочем, трудностей при решении этой задачи это создать не должно.
Во многих старых играх с двумерной графикой можно столкнуться с подобной ситуацией. Какой-нибудь герой прыгает по платформам (или островкам), которые висят в воздухе. Он должен перебраться от одного края экрана до другого. При этом при прыжке с одной платформы на соседнюю, у героя уходит |y2-y1| единиц энергии, где y1 и y2 – высоты, на которых расположены эти платформы. Кроме того, у героя есть суперприем, который позволяет перескочить через платформу, но на это затрачивается 3*|y3-y1| единиц энергии. Конечно же, энергию следует расходовать максимально экономно.
Предположим, что вам известны координаты всех платформ в порядке от левого края до правого. Сможете ли вы найти, какое минимальное количество энергии потребуется герою, чтобы добраться с первой платформы до последней?
Входные данные
В первой строке входного файла INPUT.TXT записано количество платформ n (1 ≤ n ≤ 30000). Вторая строка содержит n натуральных чисел, не превосходящих 30000 – высоты, на которых располагаются платформы.
Выходные данные
В выходной файл OUTPUT.TXT запишите единственное число – минимальное количество энергии, которую должен потратить игрок на преодоление платформ (конечно же в предположении, что cheat-коды использовать нельзя).
INPUT.TXT
3
1 5 10
OUTPUT.TXT
9

5 Июл 2019 в 14:05
420 +1
0
Ответы
1

Вот пример решения на Python:

# Чтение входных данных
with open("INPUT.TXT", "r") as f:
n = int(f.readline())
heights = list(map(int, f.readline().split()))
# Инициализация массива для хранения минимальной энергии
energy = [0] * n
energy[0] = 0
# Вычисление минимальной энергии
for i in range(1, n):
energy[i] = min(energy[i-1] + abs(heights[i] - heights[i-1]), energy[i-2] + 3 * abs(heights[i] - heights[i-2]))
# Запись результата в файл
with open("OUTPUT.TXT", "w") as f:
f.write(str(energy[n-1]))

Этот код считывает высоты платформ, затем вычисляет минимальное количество энергии, которое потребуется игроку для преодоления всех платформ, и записывает результат в файл OUTPUT.TXT.

21 Апр в 00:02
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 913 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир