学习算法,个人觉得还是对照着例题来理解效果做好,算法概念太学术味太浓,个人不太喜欢。今天介绍一个动态规划入门例题。这道题来自北大的POJ。题目如下:
数字三角形(POJ1163)
在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或 右下走。只需要求出这个最大和即可,不必给出具体路径。 三角形的行数大于1小于等于100,数字为 0 - 99
输入格式:
5 //表示三角形的行数 接下来输入三角形
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
要求输出最大和
我们来分析一下这道题该怎么做
首先肯定要一个二维数组来存放三角形
然后我们用D( r, j) 来表示第 r 行第 j 个数字(r , j从1开始算)
我们用max