算法第三章上机实践报告

实践题目: 数字三角形

问题描述:给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。

算法描述:首先先定义一个二维数组a[i][j]存放数字三角形,然后在定义一个函数maxsun(i,j)采用递归,每次出发往下一步a[i+1][j]或a[i+1][j+1];同时为了减少计算量,在每次一次计算出一个maxsum(r,j)之后就把它的值保存起来,到下次运算直接使用,是采用了备忘录。

算法时间及空间复杂度分析:由于三角形的数字总数为n(n+1)/2。所以完成计算的时间复杂度为O(n^2)。

心得体会:起初并没有采用备忘录。而是直接采用递归,导致运行超时,而采用了备忘录能大大减少重复的计算。

posted @ 2019-10-20 21:51  luferm  阅读(96)  评论(0编辑  收藏  举报