Бельчонок, чтобы запасы на зиму не замерзли складывает их особым образом. Он берет орехи и сухую траву и кладет их в стопки. Орехи испортятся, если в стопке будут лежать более двух орехов подряд. Посчитайте, сколькими способами можно сложить стопку запасов длинной N так, чтобы орехи не испортились. В длину стопки входит как орехи, так и трава. Напишите на одном из следующих языков программирования: C++, Pascal, Basic, Python программу вычисляющую ответ (20 баллов) для произвольного N, введенного с клавиатуры, либо решите для N=10
def count_ways(N): dp = [0] * (N + 1) dp[0] = 1 for i in range(1, N + 1): dp[i] = dp[i - 1] + (i - 1) * dp[max(i - 2, 0)] return dp[N] N = 10 ways = count_ways(N) print(ways)
В данном коде мы вычисляем количество способов сложить стопку длиной N, чтобы орехи не испортились, используя динамическое программирование. Результат для N=10 будет выведен на экран.
Python:
def count_ways(N):dp = [0] * (N + 1)
dp[0] = 1
for i in range(1, N + 1):
dp[i] = dp[i - 1] + (i - 1) * dp[max(i - 2, 0)]
return dp[N]
N = 10
ways = count_ways(N)
print(ways)
В данном коде мы вычисляем количество способов сложить стопку длиной N, чтобы орехи не испортились, используя динамическое программирование. Результат для N=10 будет выведен на экран.