Динамическое программирование — разбиение сложной задачи на небольшие подзадачи. Таким образом, достичь сложной цели становится проще. Решения подзадач сохраняются и используются в будущем для решения других задач. Это позволяет избежать повторных вычислений и значительно ускорить процесс.
Цель: Найти количество вариантов, которыми кузнечик может добраться до точки n.
Цель: Мы имеем рюкзак вместимостью W, в который нам необходимо положить k предметов имеющих вес wi и цену pi, так, чтобы стоимость была максимальной.
Цель: Найти в массиве чисел строго возрастающую подпоследовательность наибольшей длины.