Простой пример для тех, кто хочет понять динамическое программирование

Я ищу удобный для понимания пример для тех, кто хочет изучить динамическое программирование. Здесь есть приятные ответы о том, что такое динамическое программирование. Пример фибоначчи - отличный пример, но он слишком мал, чтобы поцарапать поверхность. Мне очень интересно узнать, хотя я еще не взял класс алгоритмов, надеюсь, что это в моем списке для spring.

Ответ 3

Идея динамического программирования заключается в том, что вы выполняете кэширование (memoizing) решений подзадач, хотя я думаю, что там больше, чем это.

Существует множество проблем с застреванием в Google Code, так что решения требуют динамического программирования. Примеры:

Добро пожаловать в замятие кода (умеренный)

Обман булевского дерева (умеренный)

PermRLE (жесткий)

Обратите внимание, что в каждом из конкурсов по борьбе с пробкой кода есть раздел "Анализ конкурса", если вы пытаетесь решить проблему.

Ответ 4

Расчет расстояний Левенштейна был одной из первых проблем, которые я решил с динамическим программированием; Я думаю, что это достойный следующий шаг от последовательности Фибоначчи с точки зрения сложности.

http://en.wikipedia.org/wiki/Levenshtein_distance

Ответ 5

  • Geeks для geeks имеет отличную коллекцию для задач динамического программирования. Я считаю, что этот набор является одним из лучших, если вы готовитесь к интервью.
  • Если вам нужны небольшие обучающие видеоролики о проблемах с DP, вы можете проверить эту проблему из MIT.