动态规划算法主要的核心思想是:状态和状态转移方程。怎么理解这个问题呢?
先拿到了一个数字三角形的程序,阅读了它的动态规划的代码,但是看不明白!不明白在什么地方呢?在具体的执行过程各个变量的变化方向。比如两层for循环,i为逆序,j为次序。那么这种执行次序就没有办法想象了。
那就先不管上面的了,先看DAG上面的动态规划。
抄了一遍poj2479这个题目的答案。大致理解这个题目的解题思路是,先顺序去搜索最大连续子串值存在一个数组里面,再逆序去搜索逆序的最大子串值,该值与当前搜索到的位置的顺序的子串值数组项相加,取所有和中最大的那个。
抄了一遍后感觉对算法的理解更深了,因为每一个处理步骤都记在脑中了。所以学习离散的知识,关键还是每一个处理步骤的记忆,记得多了后再融会贯通。