Это хакерранкский вопрос: Алиса - воспитательница в детском саду. Она хочет дать несколько конфет детям в своем классе. Все дети сидят в очереди (их позиции фиксированы), и у каждого из них есть рейтинговый балл в соответствии с его или ее успеваемостью в классе. Алиса хочет дать как минимум 1 конфету каждому ребенку. Если двое детей сидят рядом, то ребенок с более высоким рейтингом должен получить больше конфет. Алиса хочет сэкономить, поэтому ей нужно свести к минимуму общее количество конфет, подаренных детям.
n = int(input())
candies = 1
candy = 1
temp = int(input())
for i in range(1,n):
temp1 = int(input())
if (temp1>temp):
candy = candy + 1
else:
candy = 1
temp = temp1
candies = candies+candy
print candy
print candies
Тестовая матрица: n = 10, n элементов: [2 4 2 6 1 7 8 9 2 1]. Я получаю 18 в качестве ответа, в то время как 19 является правильным ответом. Я делаю какую-то ошибку, которую не могу уловить.
Это ссылка на полный вопрос [https://www.hackerrank.com/challenges/candies ]
2 ответа
Измените свой код, как это. Вы выполняете итерацию только в левом направлении, но правый сосед также должен быть проверен. Запустите тот же цикл справа и возьмите максимальное из этих двух значений. Это должно быть вашим новым назначением конфет.
n = int(input())
candy = 1
temp = int(input())
list =[]
rating =[]
rating.append(temp)
list.append(candy)
for i in range(1,n):
temp1 = int(input())
rating.append(temp1)
if (temp1>temp):
candy = candy + 1
else:
candy = 1
list.append(candy)
temp = temp1
rating= rating[::-1]
list = list[::-1]
temp = rating[0]
candies =list[0]
for i in range(1,n):
temp1 = rating[i]
if (temp1>temp):
list[i]= max(list[i-1]+1,list[i])
candies =candies+list[i]
temp = temp1
print candies
n = input()
a = [input() for _ in xrange(n)]
//min. candies he has to give
candies = [1] * n
for i in xrange(1, n):
if a[i] > a[i-1]:
candies[i] = candies[i-1] + 1
for i in xrange(n-2, -1, -1):
if a[i] > a[i+1]:
candies[i] = max(candies[i], candies[i+1] + 1)
print sum(candies)
Вот как я это сделал, дав каждому ребенку по одной конфете.
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.