Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 7, 2021 17:41:54

Fiares_Curie
Зарегистрирован: 2021-10-06
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Задача "Платная лестница"

Мальчик подошел к платной лестнице. Чтобы наступить на любую ступеньку, нужно заплатить указанную на ней сумму. Мальчик умеет перешагивать на следующую ступеньку, либо перепрыгивать через ступеньку. Требуется узнать, какая наименьшая сумма понадобится мальчику, чтобы добраться до верхней ступеньки.
Входные данные:
В первой строке входного файла вводится одно натуральное число N≤100 — количество ступенек.
В следующей строке вводятся N натуральных чисел, не превосходящих 100 — стоимость каждой ступеньки (снизу вверх).

Выходные данные:
Выведите одно число — наименьшую возможную стоимость прохода по лесенке.
У меня получился такой код:

 n = int(input())
a = []
count = 0
for i in range(1, n+1):
    a.append(int(input()))
while len(a) != 0:
    if len(a) == 1:
        count += a[0]
        print(count)
        del a[0]
    else:
        b = min(a[0], a[1])
        count += b
        del a[0]
        del a[1]
Однако во первых числа должны вводиться так: на одной строке вводиться кол-во чисел, на другой сами числа ЧЕРЕЗ ПРОБЕЛ. Во вторых программа работает почему-то не правильно (наприме при значениях 3, 1, 3 ответ 3, а мне выводит 4). Как это исправить?

Офлайн

#2 Окт. 7, 2021 21:24:31

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9897
Репутация: +  855  -
Профиль   Отправить e-mail  

Задача "Платная лестница"

Fiares_Curie
на одной строке вводиться кол-во чисел, на другой сами числа ЧЕРЕЗ ПРОБЕЛ.
  
>>> input().split()
1 2 3 4 5
['1', '2', '3', '4', '5']
>>> list(map(int, input().split()))
1 2 3 4 5
[1, 2, 3, 4, 5]
>>>

И этот алгоритм нужно делать без накопления чисел. Просто читаешь одно число и сохраняешь его. Потом читаешь следующее число. Если следующее число больше сохранённого числа или равно ему, то прибавляешь к общей сумме сохранённое число и сохраняешь следующее число. Если следующее число меньше сохранённого числа, то прибавляешь к общей сумме следующее число и сохраняешь следующее число.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version