Разбиение на перекрывающиеся подзадачи; сохранение результатов (мемоизация или таблица). Оптимальная подструктура и перекрывающиеся подзадачи. Примеры: Fibonacci, рюкзак, LCS, кратчайший путь.