Глава

Рекурсии и последовательности

Модуль учит строить рекурсии по последнему шагу, последней плитке, последнему символу и последней точке пути, а также вводит дополнительные состояния.
Войдите, чтобы сохранять решённые и закладки.

Теория

Ключевая идея

Рекурсия появляется, когда объект можно построить из меньшего объекта последним шагом. Вместо того чтобы сразу считать большой случай, мы вводим \(a_n\): число способов для размера \(n\), а затем выражаем \(a_n\) через предыдущие значения.

В олимпиадных задачах важно не угадывать последовательность, а объяснять разбиение: по последнему шагу, последней плитке, последнему символу, последнему столбцу или последней точке пути.

Основные факты

  • Если последний шаг имеет длину \(1\) или \(2\), часто возникает \(a_n=a_{n-1}+a_{n-2}\).
  • Замощения полосы \(2\times n\) домино дают ту же рекурсию Фибоначчи.
  • Двоичные строки без соседних единиц удобно делить по последнему символу.
  • Пути по решетке считаются рекурсией \(P(i,j)=P(i-1,j)+P(i,j-1)\) или формулой \(\binom{m+n}{m}\).
  • Если одного состояния мало, вводят дополнительные состояния: например, «доска с одной дыркой справа».

Когда применять метод

  • Нужно посчитать число способов для длинной строки, полосы, лестницы или пути.
  • Объект размера \(n\) естественно заканчивается одним из нескольких типов последних шагов.
  • Малые случаи легко выписать, а общий случай похож на предыдущие.
  • Прямой перебор быстро разрастается, но структура повторяется.

Как распознать метод

Спросите: как может выглядеть последний шаг? Если последний шаг удален, что осталось? Если осталось снова то же самое, нужна одна рекурсия. Если осталось несколько типов «почти той же» задачи, нужны несколько состояний.

В задачах на строки смотрите на последний символ или последние два символа. В задачах на замощения смотрите на последний столбец. В задачах на пути смотрите, откуда пришли в последнюю клетку.

Типичные ошибки

  • Пишут рекурсию без начальных условий.
  • Дважды считают объекты, когда случаи последнего шага пересекаются.
  • Не проверяют малые значения \(n=0\), \(n=1\), хотя они нужны для рекурсии.
  • Используют формулу Фибоначчи там, где есть третий тип последнего шага.
  • В задачах на пути путают количество шагов с количеством точек решетки.

Мини-чеклист

  • Что обозначает \(a_n\)?
  • Какие начальные значения нужны?
  • По какому последнему элементу делим случаи?
  • Случаи не пересекаются?
  • Все варианты учтены?
  • Нужно ли добавить второе состояние?

Примеры

Пример 1. Лестница

Последний шаг сразу дает рекурсию Фибоначчи.

Задача. Сколькими способами можно подняться на \(7\) ступенек, если за раз можно подняться на \(1\) или \(2\) ступеньки?

Решение.

Пусть \(a_n\) - число способов подняться на \(n\) ступенек. Последний шаг был либо на \(1\) ступеньку из положения \(n-1\), либо на \(2\) ступеньки из положения \(n-2\). Поэтому \(a_n=a_{n-1}+a_{n-2}\). Начальные значения: \(a_0=1\), \(a_1=1\). Получаем \(a_2=2\), \(a_3=3\), \(a_4=5\), \(a_5=8\), \(a_6=13\), \(a_7=21\).

Пример 2. Полоса \(2\times n\)

Замощение домино имеет ту же структуру.

Задача. Сколькими способами можно замостить доску \(2\times6\) домино?

Решение.

Пусть \(a_n\) - число замощений \(2\times n\). Последний столбец либо покрыт вертикальным домино, тогда остается \(2\times(n-1)\), либо последние два столбца покрыты двумя горизонтальными домино, тогда остается \(2\times(n-2)\). Поэтому \(a_n=a_{n-1}+a_{n-2}\), \(a_0=1\), \(a_1=1\). Получаем \(a_6=13\).

Пример 3. Двоичные строки

Строки удобно делить по последнему символу.

Задача. Сколько двоичных строк длины \(6\) не содержат двух соседних единиц?

Решение.

Пусть \(a_n\) - число таких строк длины \(n\). Если строка заканчивается на \(0\), перед ним может быть любая допустимая строка длины \(n-1\). Если строка заканчивается на \(1\), перед ним обязан стоять \(0\), и до этого идет допустимая строка длины \(n-2\). Значит \(a_n=a_{n-1}+a_{n-2}\). При \(a_0=1\), \(a_1=2\) получаем \(a_6=21\).

Пример 4. Пути по решетке

Последний шаг в точку приходит слева или снизу.

Задача. Сколько кратчайших путей из \((0,0)\) в \((4,3)\), если можно идти только вправо и вверх?

Решение.

Всего нужно сделать \(4\) шагов вправо и \(3\) вверх, всего \(7\) шагов. Нужно выбрать места для \(4\) шагов вправо: \(\binom{7}{4}=35\).

Пример 5. Путь через точку

Иногда путь удобно разбить на две независимые части.

Задача. Сколько кратчайших путей из \((0,0)\) в \((5,4)\) проходят через \((2,1)\)?

Решение.

До точки \((2,1)\) нужно сделать \(2\) шага вправо и \(1\) вверх: \(\binom{3}{1}=3\) пути. От \((2,1)\) до \((5,4)\) нужно сделать \(3\) шага вправо и \(3\) вверх: \(\binom{6}{3}=20\) путей. Итого \(3\cdot20=60\).

Пример 6. Состав числа

Разбиение по последнему слагаемому дает рекурсию с тремя предыдущими членами.

Задача. Сколькими способами можно представить \(8\) как сумму слагаемых \(1\), \(2\), \(3\), если порядок важен?

Решение.

Пусть \(a_n\) - число способов получить сумму \(n\). Последнее слагаемое равно \(1\), \(2\) или \(3\), поэтому \(a_n=a_{n-1}+a_{n-2}+a_{n-3}\). При \(a_0=1\), \(a_1=1\), \(a_2=2\) получаем \(a_3=4\), \(a_4=7\), \(a_5=13\), \(a_6=24\), \(a_7=44\), \(a_8=81\).

Пример 7. Запрещенные три нуля

Иногда нужно смотреть на последний блок.

Задача. Сколько двоичных строк длины \(7\) не содержат трех нулей подряд?

Решение.

Пусть \(a_n\) - число таких строк. Допустимая строка заканчивается либо на \(1\), либо на \(01\), либо на \(001\), если рассматривать последний блок нулей перед последней единицей; для концов строки это дает ту же рекурсию \(a_n=a_{n-1}+a_{n-2}+a_{n-3}\). Начальные значения: \(a_0=1\), \(a_1=2\), \(a_2=4\). Тогда \(a_7=81\).

Пример 8. Дополнительное состояние

Для сложного замощения одной переменной уже мало.

Задача. Доску \(2\times n\) замощают домино и L-тримино. Объясните, зачем вводить второе состояние.

Решение.

Пусть \(A_n\) - число полных замощений \(2\times n\), а \(B_n\) - число замощений доски \(2\times n\) с одной удаленной угловой клеткой справа. Тогда последний блок может оставлять или закрывать такую «дырку», и рекурсии имеют вид \(B_n=A_{n-2}+B_{n-1}\), \(A_n=A_{n-1}+A_{n-2}+2B_{n-1}\). Второе состояние нужно, потому что после удаления L-тримино часто остается не прямоугольник, а почти прямоугольник.

Задачи

Задачи

#10.1
#10.1

Пять ступенек

Фибоначчи 7 класс 8 класс ★☆☆☆☆

Сколькими способами можно подняться на \(5\) ступенек, если за ход можно подняться на \(1\) или \(2\) ступеньки?

Детали
Задача: COM-B1-M10-P001
Сложность: Уровень 1 из 5
Tag: Фибоначчи
Grade: 7 класс, 8 класс
#10.2
#10.2

Доска \(2\times4\)

Замощения 7 класс 8 класс ★☆☆☆☆

Сколькими способами можно замостить доску \(2\times4\) домино?

Детали
Задача: COM-B1-M10-P002
Сложность: Уровень 1 из 5
Tag: Замощения
Grade: 7 класс, 8 класс
#10.3
#10.3

Строки длины \(4\)

Бинарные строки 7 класс 8 класс ★☆☆☆☆

Сколько двоичных строк длины \(4\) не содержат двух соседних единиц?

Детали
Задача: COM-B1-M10-P003
Сложность: Уровень 1 из 5
Tag: Бинарные строки
Grade: 7 класс, 8 класс
#10.4
#10.4

Путь \((0,0)\to(2,3)\)

Подсчёт 7 класс 8 класс ★☆☆☆☆

Сколько кратчайших путей ведет из \((0,0)\) в \((2,3)\), если можно идти только вправо и вверх?

Детали
Задача: COM-B1-M10-P004
Сложность: Уровень 1 из 5
Tag: Подсчёт
Grade: 7 класс, 8 класс
#10.5
#10.5

Шестой член

Recursion 7 класс 8 класс ★☆☆☆☆

Последовательность задана условиями \(a_1=1\), \(a_2=2\), \(a_n=a_{n-1}+a_{n-2}\). Найдите \(a_6\).

Детали
Задача: COM-B1-M10-P005
Сложность: Уровень 1 из 5
Tag: Recursion
Grade: 7 класс, 8 класс
#10.6
#10.6

Десять ступенек

Фибоначчи 7 класс 8 класс ★★☆☆☆

Сколькими способами можно подняться на \(10\) ступенек шагами по \(1\) или \(2\)?

Детали
Задача: COM-B1-M10-P006
Сложность: Уровень 2 из 5
Tag: Фибоначчи
Grade: 7 класс, 8 класс
#10.7
#10.7

Доска \(2\times8\)

Замощения 7 класс 8 класс ★★☆☆☆

Сколькими способами можно замостить доску \(2\times8\) домино?

Детали
Задача: COM-B1-M10-P007
Сложность: Уровень 2 из 5
Tag: Замощения
Grade: 7 класс, 8 класс
#10.8
#10.8

Строки длины \(8\)

Бинарные строки 7 класс 8 класс ★★☆☆☆

Сколько двоичных строк длины \(8\) не содержат двух соседних единиц?

Детали
Задача: COM-B1-M10-P008
Сложность: Уровень 2 из 5
Tag: Бинарные строки
Grade: 7 класс, 8 класс
#10.9
#10.9

Путь \((0,0)\to(4,3)\)

Биномиальные коэффициенты 7 класс 8 класс ★★☆☆☆

Сколько кратчайших путей идет из \((0,0)\) в \((4,3)\)?

Детали
Задача: COM-B1-M10-P009
Сложность: Уровень 2 из 5
Tag: Биномиальные коэффициенты
Grade: 7 класс, 8 класс
#10.10
#10.10

Путь через точку

Правило произведения 8 класс 9 класс ★★☆☆☆

Сколько кратчайших путей из \((0,0)\) в \((5,4)\) проходят через точку \((2,1)\)?

Детали
Задача: COM-B1-M10-P010
Сложность: Уровень 2 из 5
Tag: Правило произведения
Grade: 8 класс, 9 класс
#10.11
#10.11

Полоса из \(9\) клеток

Замощения 8 класс 9 класс ★★☆☆☆

Сколькими способами можно замостить полосу \(1\times9\) плитками \(1\times1\) и \(1\times2\)?

Детали
Задача: COM-B1-M10-P011
Сложность: Уровень 2 из 5
Tag: Замощения
Grade: 8 класс, 9 класс
#10.12
#10.12

Без соседних чисел

Подмножества 8 класс 9 класс ★★☆☆☆

Сколько подмножеств множества \(\{1,2,\ldots,7\}\) не содержат двух соседних чисел?

Детали
Задача: COM-B1-M10-P012
Сложность: Уровень 2 из 5
Tag: Подмножества
Grade: 8 класс, 9 класс
#10.13
#10.13

Подмножества без соседей

Подмножества 8 класс 9 класс ★★★☆☆

Докажите, что число подмножеств множества \(\{1,2,\ldots,n\}\), не содержащих двух соседних чисел, удовлетворяет рекурсии \(a_n=a_{n-1}+a_{n-2}\).

Детали
Задача: COM-B1-M10-P013
Сложность: Уровень 3 из 5
Tag: Подмножества
Grade: 8 класс, 9 класс
#10.14
#10.14

Докажите рекурсию для домино

Замощения 8 класс 9 класс ★★★☆☆

Докажите, что число замощений доски \(2\times n\) домино удовлетворяет \(a_n=a_{n-1}+a_{n-2}\).

Детали
Задача: COM-B1-M10-P014
Сложность: Уровень 3 из 5
Tag: Замощения
Grade: 8 класс, 9 класс
#10.15
#10.15

Без трех нулей

Бинарные строки 8 класс 9 класс ★★★☆☆

Сколько двоичных строк длины \(10\) не содержат трех нулей подряд?

Детали
Задача: COM-B1-M10-P015
Сложность: Уровень 3 из 5
Tag: Бинарные строки
Grade: 8 класс, 9 класс
#10.16
#10.16

Путь мимо точки

Метод дополнения 8 класс 9 класс ★★★☆☆

Сколько кратчайших путей из \((0,0)\) в \((5,4)\) не проходят через \((2,1)\)?

Детали
Задача: COM-B1-M10-P016
Сложность: Уровень 3 из 5
Tag: Метод дополнения
Grade: 8 класс, 9 класс
#10.17
#10.17

Слагаемые \(1,2,3\)

Recursion 8 класс 9 класс ★★★☆☆

Сколькими способами можно представить \(9\) как сумму чисел \(1\), \(2\), \(3\), если порядок слагаемых важен?

Детали
Задача: COM-B1-M10-P017
Сложность: Уровень 3 из 5
Tag: Recursion
Grade: 8 класс, 9 класс
#10.18
#10.18

Без равных соседей

Строки 8 класс 9 класс ★★★☆☆

Сколько строк длины \(8\) из букв \(A,B,C\) не имеют двух одинаковых соседних букв?

Детали
Задача: COM-B1-M10-P018
Сложность: Уровень 3 из 5
Tag: Строки
Grade: 8 класс, 9 класс
#10.19
#10.19

Шаги \(1\) и \(3\)

Recursion 8 класс 9 класс ★★★☆☆

Сколькими способами можно подняться на \(12\) ступенек, если за ход можно подняться на \(1\) или \(3\) ступеньки?

Детали
Задача: COM-B1-M10-P019
Сложность: Уровень 3 из 5
Tag: Recursion
Grade: 8 класс, 9 класс
#10.20
#10.20

Плитки длины \(1\), \(2\), \(3\)

Замощения 8 класс 9 класс ★★★☆☆

Сколькими способами можно замостить полосу \(1\times8\) плитками длины \(1\), \(2\), \(3\)?

Детали
Задача: COM-B1-M10-P020
Сложность: Уровень 3 из 5
Tag: Замощения
Grade: 8 класс, 9 класс
#10.21
#10.21

Квадраты и домино

Замощения 8 класс 9 класс ★★★★☆

Доску \(2\times6\) замощают вертикальными домино, парами горизонтальных домино и квадратами \(2\times2\). Сколько замощений возможно?

Детали
Задача: COM-B1-M10-P021
Сложность: Уровень 4 из 5
Tag: Замощения
Grade: 8 класс, 9 класс
#10.22
#10.22

Формула для строк

Доказательство 8 класс 9 класс ★★★★☆

Докажите, что число двоичных строк длины \(n\) без двух соседних единиц равно \(F_{n+2}\), если \(F_1=1\), \(F_2=1\).

Детали
Задача: COM-B1-M10-P022
Сложность: Уровень 4 из 5
Tag: Доказательство
Grade: 8 класс, 9 класс
#10.23
#10.23

Не выше диагонали

Пути в решётке 8 класс 9 класс ★★★★☆

Сколько путей из \((0,0)\) в \((4,4)\), состоящих из шагов вправо и вверх, никогда не поднимаются выше диагонали \(y=x\)?

Детали
Задача: COM-B1-M10-P023
Сложность: Уровень 4 из 5
Tag: Пути в решётке
Grade: 8 класс, 9 класс
#10.24
#10.24

Домино и L-тримино

Замощения 8 класс 9 класс ★★★★★

Доску \(2\times6\) замощают домино и L-тримино. Найдите число замощений.

Детали
Задача: COM-B1-M10-P024
Сложность: Уровень 5 из 5
Tag: Замощения
Grade: 8 класс, 9 класс

Лестницы

Опубликованных лестниц пока нет.
Предыдущая глава
Следующая глава