数塔问题是典型的dp问题之一,关键点:建立状态转移方程,这也是dp问题常见的一种思考方式(我不知道是不是所有的dp都是这种思考方式,看过的一些资料里面,建立状态转移方程很普遍,可能是自己碰到的面还不够广吧), 而这里还有一个更为重要的思考点就是从哪儿开始建立?
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2084
求经过结点数字之和最大值的问题,用二维数组来表示其中结构也是dp里面常用的方法,我觉的用这种方法可能更易于去建立某种关系:非线性—>线性. 因为我觉的dp的思为方式跨度再大,它也的是采用线性关系来让许多看是间断的,不连续的点变成连续的,线性的。数塔问题里面采用了倒序相加的思想,map[i][j]+=max(map[i+1][j] , map[i+1][j+1]).它没有从最后一个开始,而是从倒数第二行开始,这不得不让人佩服。然后,求出每一行和下一行的和的最大值,体现了很强的动态性,依次类推,最后map[0][0]就是所求的解了。
当然这种思考方式在目前看来是很不错的,也很适合我们借鉴和学习。
但方法再好,也不见得是最好的(我猜测的~~),只借鉴学习是不够的,我觉的最重要的是当你在思考某个问题的时候,这个问题里面有你自己独特的见解有几分,这很重要,因为多角度去思考问题更能拓展解决问题的能力。
我的问题是,如果采用正序去求解,结果会又如何呢? 。。。。。。。。。