概述
2维DP问题。
问题:一个拥有N*M个单元的格子,每一个里面都有着一定数量的苹果,数量已经给定。现在你位于左上角。每一步你可以向下走或者向右走。问你能够收集到最多多少个苹果。
这个问题可以向其他DP问题一样来解决;几乎没有差别。首先我们需要找出一个状态。首先我们需要注意到到某个单元里最多有两种方法-要么从它的左边过来(如果当前格子不是在第一列的话),要么从上方过来(如果它不是在最上面的行的话)。为了找到该单元的最优方案,我们首先需要找到到达它的单元的最优方案。
我们可以很容易的得到转移关系:
S[i][j]=A[i][j]+max(S[i-1][j], S[i][j-1])
式中,i代表行,j代表列。A[i][j]为i,j单元格中的苹果数量。S[i][j]需要在每行中从左到右计算,并且从上到下计算每一行,或者从上到下计算每一列然后从左到右处理每一列。
最后
以上就是粗暴紫菜为你收集整理的Dynamic Programming 学习笔记(三)的全部内容,希望文章能够帮你解决Dynamic Programming 学习笔记(三)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复