我正在为想要学习动态编程的人寻找一个易于理解的例子。 There are nice answers here about what is dynamic programming。斐波那契序列是一个很好的例子,但它太小而不能划伤表面。虽然我还没有参加算法课程,但它看起来是一个很好的主题,希望它在我的春季名单上。
答案 0 :(得分:28)
答案 1 :(得分:19)
Here is a good tutorial包含29个已解决的DP问题,并有很好的解释。
答案 2 :(得分:7)
动态编程背后的想法是你正在缓存(memoizing)子问题的解决方案,尽管我认为还有更多的问题。
Google Code Jam存在许多问题,因此解决方案需要动态编程才能提高效率。例子:
Welcome to Code Jam (moderate)
Cheating a Boolean Tree (moderate)
请注意,每个Code Jam练习比赛都会有一个“比赛分析”部分,如果您难以尝试解决问题。
答案 3 :(得分:5)
答案 4 :(得分:4)
计算Levenshtein距离是我用动态规划解决的第一个问题之一;我认为从复杂性来看,斐波那契序列是一个不错的下一步。