动态规划程序设计.DOC

动态规划程序设计

动态规划程序设计(3) 由于动态规划的“名气”如此之大,以至于很多人甚至一些资料书上都往往把一种与动态规划十分相似的算法,当作是动态规划。这种算法就是递推。实际上,这两种算法还是很容易区分的。 按解题的目标来分,信息学试题主要分四类:判定性问题、构造性问题、计数问题和最优化问题。我们在竞赛中碰到的大多是最优化问题,而动态规划正是解决最优化问题的有力武器,因此动态规划在竞赛中的地位日益提高。而递推法在处理判定性问题和计数问题方面也是一把利器。下面分别就两个例子,谈一下递推法和动态规划在这两个方面的联系。 【例】1所示的数塔,从顶部出发,在每一结点可以选择向左走或是向右走,一起走到底层,要求找出一条路径,使路径上的值最大。 图1 这道题如果用枚举法,在数塔层数稍大的情况下(如40),则需要列举出的路径条数将是一个非常庞大的数目。所以实际求解时,可从底层开始,层层递进,最后得到最大值。n行,则有n-1个阶段,找到问题求解的最优路径。 自底向上计算:(给出递推式和终止条件) ①从底层开始,本身数即为最大数; ②倒数第二层的计算,取决于底层的数据:12+6=18,13+14=27,24+15=39,24+8=32; ③倒数第三层的计算,取决于底二层计算的数据:27+12=39,39+7=46,39+26=65 ④倒数第四层的计算,取决于底三层计算的数据:46+11=57,65+8=73

文档评论(0)

1亿VIP精品文档

相关文档