Я ищу легко понятный пример для тех, кто хочет изучить динамическое программирование. Здесь есть хорошие ответы о том, что такое динамическое программирование . Последовательность Фибоначчи - отличный пример, но она слишком мала, чтобы поцарапать поверхность. Похоже, это отличный предмет для изучения, хотя я еще не изучал класс алгоритмов, надеюсь, он в моем списке на весну.
96
Вот хороший учебник, содержащий 29 решенных задач DP с отличным объяснением.
источник
Идея динамического программирования заключается в том, что вы кэшируете (запоминаете) решения подзадач, хотя я думаю, что это еще не все.
Есть много проблем с Google Code Jam, для решения которых требуется динамическое программирование. Примеры:
Добро пожаловать в Code Jam (умеренный)
Обман булева дерева (умеренный)
PermRLE (жесткий)
Обратите внимание, что в каждом практическом конкурсе Code Jam есть раздел «Анализ конкурса» на случай, если вы в тупике пытаетесь решить проблему.
источник
источник
Вычисление расстояний Левенштейна было одной из первых задач, которые я решил с помощью динамического программирования; Я думаю, что это достойный следующий шаг от последовательности Фибоначчи с точки зрения сложности.
http://en.wikipedia.org/wiki/Levenshtein_distance
источник