В крайних клетках полоски шириной в одну клетку и длиной в N клеток сидят лягушка и кузнечик: лягушка в клетке № 1, кузнечик в клетке № N. Каждую секунду лягушка прыгает в сторону
кузнечика, и одновременно кузнечик прыгает в сторону лягушки. Лягушка может прыгать только
на две или на три клетки, кузнечик — только на одну или на две клетки. За какое наименьшее
время они смогут оказаться в одной клетке?
Формат входных данных:
Единственная строка входных данных содержит целое число N — длину клетчатой полосы
(2 6 N 6 2 · 109).
python
N = int(input())
dp = [[0, 0] for _ in range(N+1)]
for i in range(2, N+1):
dp[i][0] = min(dp[i-2][1], dp[i-3][1]) + 1
dp[i][1] = min(dp[i-1][0], dp[i-2][0]) + 1
dp[N][0] = min(dp[N-2][0], dp[N-3][1]) + 1
dp[N][1] = min(dp[N-1][0], dp[N-2][0]) + 1
answer = min(dp[N][0], dp[N][1])
print(answer)
Сложность данного алгоритма составляет O(N), где N - длина полосы. Так как заданное значение N может быть достаточно большим (до 2·10^9), мы можем считать это решение эффективным и подходящим для данной задачи.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет