我正在为想要学习动态编程的人寻找一个易于理解的例子 . There are nice answers here about what is dynamic programming . 斐波那契序列是一个很好的例子,但它太小而不能划伤表面 . 它看起来是一个很好的主题,虽然我尚未参加算法课程,但希望它在我的 Spring 季名单上 .
我正在为想要学习动态编程的人寻找一个易于理解的例子 . There are nice answers here about what is dynamic programming . 斐波那契序列是一个很好的例子,但它太小而不能划伤表面 . 它看起来是一个很好的主题,虽然我尚未参加算法课程,但希望它在我的 Spring 季名单上 .
5 回答
看看这个网站:Dynamic Programming Practice Problems
Here is a good tutorial包含29解决了DP问题,有很好的解释 .
动态编程背后的想法是你正在缓存(memoizing)子问题的解决方案,虽然我认为它还有更多 .
Google Code Jam存在许多问题,因此解决方案需要动态编程才能有效 . 例子:
Welcome to Code Jam (moderate)
Cheating a Boolean Tree (moderate)
PermRLE (hard)
请注意,如果您难以尝试解决问题,则每个Code Jam练习比赛都会有一个“比赛分析”部分 .
极客的极客有很好的动态编程问题 . 如果你准备面试,我觉得这套是最好的之一 .
如果您想要关于DP问题的小教程视频,可以查看麻省理工学院的this问题集 .
计算Levenshtein距离是我用动态规划解决的第一个问题之一;我认为从复杂性来看,斐波那契序列是一个不错的下一步 .
http://en.wikipedia.org/wiki/Levenshtein_distance