Между городом A и гоордом B проложена единственная дорога, на которой построено N остановочных пунктов. Обычный автобусный маршрут из A в B предусматривает остановки на каждом из оборудованных пунктов. Экспрессный маршрут пропускает некоторые (не менее одного) остановочные пункты, но ни один экспрессный маршрут не пропускает более двух пунктов подряд. Сколько различных экспрессных маршрутов можно организовать между городами A и B? Два маршрута считаются различными, если множества остановочных пунктов, которые они пропускают, различны. 1 <= N <= 70.
Решение такое: Пусть D(n) число всех маршрутов (обычных и экспрессных), соединяющих города A и B при условии n промежуточных остановок. Тогда ответ равен D(n) - 1. Рекуррентное соотношение для нахождения D(n): D(n) = D(n-1) + D(n-2) + D(n - 3). Обьясните пожалуйста, откуда взялась эта формула, по рекурсии задач не решал, так что максимально по-простому.
Как можно попасть на последнюю (n-ю) остановку? Приехав с предпоследней (n-1)-ой, с (n-2)-й, пропустив одну, или с (n-3)-й, пропустив две.
Вот и получается, что число возможных маршрутов складывается из D(n-1), D(n-2), D(n-3).
Как найти D(n-1)? Да по аналогии, как сумму D(n-2), D(n-3), D(n-4).
Применяя такие правила к каждой, можно получить рекурсивное решение.
Стоит отметить, что простая реализация неэффективна, т.к. одни и те же значения рассчитываются многократно. Поэтому с указанными ограничениями (N=70) при использовании рекурсии нужно запоминать посчитанные значения в массиве.
Кроме того, есть ещё более продвинутые методы расчёта, о них можно почитать в статьях о числах Фибоначчи (в данном случае т.н. числа трибоначчи)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
if string обработать может, а switch не можетно использовать if, как-то не красиво
Не могу передать значение инпута datepciker, как это можно реализовать? https://cdnjscloudflare
Надо чтобы при клике на div с классом "next" ему присваивался класс "next_a", а "next" удалялсяИ соответственно при клике на "next_a" присваивался класс...