在这里先介绍两篇很好的博文(强烈推荐第二篇,讲的很好,很易懂):
http://www.360doc.com/content/13/0601/00/8076359_289597587.shtml
和
http://www.cnblogs.com/sdjl/articles/1274312.html
下面还是就这第二篇里面的金矿模型来分析(Y:开采。N:不开采)。
因为动态规划的子问题重叠的特性:每个问题都有相类似的分支的,当然边界除外。这样就会形成一棵K元完全数就可以根据离散的知识去分析有多少个叶节点,有多少个分支点。这样就可以用公式去计算一个算法是否符合你的要求,在时间复杂度和空间复杂度上。
再来就是,可以通过树形结构,去尝试解决一些问题,让问题更加具体化。需要注意的是,动态规划的4个特点中的最优子结构特性。所以,在每个分支点(根据离散中的定义,就是除了叶节点的其他节点,统称为分支点)还要加上一个最优解的方案,从这个问题的子问题的解中得到最符合的解。