задача по информатике Вовочке надо построить забор из досок длиной в 20 метров. На каждый метр забора может быть прибито не более одной доски. Важным условием является то, что на первом и последнем метре забора обязано быть по доске. При этом Вовочка может не пропускать, пропускать 3 или 7 метра подряд (но не более), то есть на этих метрах он не прибивает доски. Необходимо помочь Вовочке посчитать - сколькими способами он сможет построить забор. Можно считать, что у него в распоряжении есть любое необходимое количество досок.

12 Окт в 19:40
109 +1
0
Ответы
1

Эта задача может быть решена с помощью динамического программирования. Мы можем создать массив dp, где dp[i] будет представлять число способов построить забор длиной i метров при заданных условиях.

Шаги к решению:

Инициализация:

У нас есть забор длиной 20 метров. Поэтому массив dp будет иметь размер 21 (индексы от 0 до 20).Установим начальные условия: dp[0] = 0 (нет заборов длиной 0), dp[1] = 1 (один способ — поставить доску на 1 метр) и dp[2] = 1 (доска на 1-м и 2-м метрах).

Заполнение массива:

Для длины забора от 3 до 20 метров, мы будем использовать рекуррентное соотношение:
dp[i] = dp[i-1] + dp[i-2] + dp[i-3]Здесь:
dp[i-1] соответствует случаю, когда последняя доска стоит на 1 метре (при этом на i-ом метре будет доска).dp[i-2] соответствует случаю, когда последние две доски стоят на 2-х метрах (доска на i-1 и на i).dp[i-3] соответствует случаю с последними тремя метрами в заборе.

Условия:

Необходимо учитывать, что для i=0 у нас нет заборов. Для i=1, i=2 и i=3 мы уже учли.Для других длины забора мы просто подставляем значения выше.Пример реализации:# Инициализация массива
n = 20
dp = [0] * (n + 1)
# Установка начальных условий
dp[1] = 1 # 1 способ
if n >= 2:
dp[2] = 1 # 1 способ
if n >= 3:
dp[3] = 2 # 2 способа: (1,1,1) и (1,2)
# Заполнение массива
for i in range(4, n + 1):
dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3]
# Получаем количество способов для 20 метров
print(dp[20])Результат

Если вы выполните этот код, он выдаст число способов построить забор длиной 20 метров с учетом всех условий, установленных в задаче Вовочки.

12 Окт в 19:40
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 94 757 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир