Форум » Динамическое программирование » ege23 №187 » Ответить

ege23 №187

mcorleone: Лягушке нужно добраться до укрытия, избегая опасностей. У Лягушки есть три действия: 1. Короткий прыжок +2 2. Длинный прыжок +3 3. Избежать опасности 2n Первые два действия увеличивают позицию Лягушки на 2 и 3 соответственно. Третье действие можно применить только тогда, когда Лягушка находится в нечетной позиции — позиция N преобразуется в позицию 2N, позволяя Лягушке избежать опасности. Лягушка была замечена на расстоянии 3. Сколько существует различных путей Лягушки к укрытию в позиции 46, каждый их которых содержит не более двух действий «Избежать опасности»? Мой код: [pre2] def F(x, y, n): if x == y and n <= 2: return 1 elif x > y or n > 2: return 0 else: if x % 2 == 1: return F(x * 2, y, n + 1) else: return F(x + 2, y, n) + F(x + 3, y, n) print(F(3, 46, 0)) [/pre2] Мой ответ: 9 Правильный ответ: 126798 Не понимаю, где у меня ошибка

Ответов - 3

Поляков: В нечетных позициях вы блокируете две первые команды.

www: if x % 2 !=0: return F(x * 2, y, n + 1) + F(x + 2, y, n) + F(x + 3, y, n) else: return F(x + 2, y, n) + F(x + 3, y, n)

www: if x % 2 !=0: return F(x * 2, y, n + 1) + F(x + 2, y, n) + F(x + 3, y, n) else: return F(x + 2, y, n) + F(x + 3, y, n)




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