Форум » Динамическое программирование » 187 Задача. Неправильный ответ. » Ответить

187 Задача. Неправильный ответ.

H1ghRate: 187) (А. Брейк) Лягушке нужно добраться до укрытия, избегая опасностей. У Лягушки есть три действия: 1. Короткий прыжок +2 2. Длинный прыжок +3 3. Избежать опасности 2n Первые два действия увеличивают позицию Лягушки на 2 и 3 соответственно. Третье действие можно применить только тогда, когда Лягушка находится в нечетной позиции — позиция N преобразуется в позицию 2N, позволяя Лягушке избежать опасности. Лягушка была замечена на расстоянии 3. Сколько существует различных путей Лягушки к укрытию в позиции 46, каждый их которых содержит не более двух действий «Избежать опасности»? Мой код: [pre2]def f(a, b, k = 0): if a < b and (a % 2) == 0: return f(a + 2, b, k) + f(a + 3, b, k) if a < b and (a % 2) != 0 and k <= 2: return f(a + 2, b, k) + f(a + 3, b, k) + f(2 * a, b, k + 1) if a < b and (a % 2) != 0 and k > 2: return f(a + 2, b, k) + f(a + 3, b, k) return (a == b) print(f(3, 46))[/pre2] В коде автора он поставил знак меньше вместо знака меньше или равно, хотя в условию сказано не более 2 => <=2. Ответ: 126801 вместо 126798.

Ответов - 2

Поляков: H1ghRate пишет: В коде автора он поставил знак меньше вместо знака меньше или равно, хотя в условию сказано не более 2 => <=2. При этом вы прыгнете в третий раз, что запрещено.

H1ghRate: Понял, спасибо!



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