Определите количество последовательностей из нулей и единиц длины N (длина - это общее количество нулей и едииниц), в которых никакие три единицы не стоят рядом. Вводится натуральное число N, не превосходящее 40.

15 Ноя 2019 в 19:44
612 +1
0
Ответы
1

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

Инициализируем массив dp следующим образом:
dp[0] = 1 (единственная последовательность длины 0 - пустая строка)
dp[1] = 2 (две последовательности длины 1 - "0" и "1")

Затем заполним массив dp по формуле:
dp[i] = dp[i-1] + dp[i-2] (для i >= 2)

Таким образом, на i-ой позиции мы можем поставить либо ноль, либо одну единицу. Если мы поставим ноль, то количество последовательностей будет равно количеству последовательностей длины i-1. Если же мы поставим одну единицу, то количество последовательностей будет равно количеству последовательностей длины i-2.

Наконец, ответом на задачу будет значение dp[N].

Пример кода на Python:

def count_sequences(N):
dp = [0] * (N + 1)
dp[0] = 1
dp[1] = 2
for i in range(2, N + 1):
dp[i] = dp[i - 1] + dp[i - 2]
return dp[N]
N = int(input())
print(count_sequences(N))

Таким образом, данный код вычислит количество последовательностей из нулей и единиц длины N, в которых никакие три единицы не стоят рядом.

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