EMZETT.
Войти

Динамическое программирование

Коротко: Динамическое программирование решает большую задачу, разбивая её на перекрывающиеся подзадачи, решая каждую лишь один раз и сохраняя результаты.

Подробнее: Оно выгодно, когда у задачи есть оптимальная подструктура и одни и те же подзадачи встречаются несколько раз. Вместо перебора экспоненциального числа случаев заполняют таблицу от малых подзадач к большим (снизу вверх) или запоминают промежуточные результаты в рекурсивном решении (мемоизация, сверху вниз).

Подробности

Пример: размен монет

Какое минимальное число…

См. также: мемоизация, рекурсия, алгоритмы, О-нотация