Форум » Динамическое программирование » Задача 5012 » Ответить

Задача 5012

DenGG: Добрый день! додумался до такого решения: [pre2] a = [] b = [] a.append(1) for i in range(10): for j in a: b.append(j+4) b.append(j+7) b.append(j//2) a = b b = [] print(a.count(1)) [/pre2] но на бОльших значениях длины цепочки команд (от 17 для 3-х команд и от 14 для четырех команд) - вылетает MemoryError

Ответов - 2

Поляков: Ваше решение полностью совпадает с авторским:[pre2] # Автор: М. Фирсов # 1-й способ a = [1]#Начальное число for _ in range(10): #Кол-во команд b = [] for i in a: b.append(i + 4) b.append(i + 7) b.append(int(i / 2)) #Выбор int() вместо // связан с особенностью языка Python, #при работе с отрицательными числами. В рамках данной задачи, #выбор // на ответ не повлияет. a, b = b, [] print(a.count(1)) # 2-й способ def f(x, cnt): if cnt == 10: return x == 1 return f(x + 4, cnt + 1) + f(x + 7, cnt + 1) + f(x // 2, cnt + 1) print(f(1, 0)) [/pre2]вылетает MemoryErrorПамяти на массивы не хватает.

DenGG: Спасибо!!



полная версия страницы