算法第3章上机实践报告
1、实践题目:数字三角形
2、问题描述:给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。
3、算法描述:从倒数第二行开始,把该行每一个数的本身加上对应斜线上的最大数,倒数第二行加完后,最后一行便可删除,然后到倒数第三行开始,把该行每一个数的本身加上对应斜线上的最大数,以此类推,直到加到第一行为止,这时数字三角形的第一个数字便是最大路径的值。
4、算法时间及空间复杂度分析:空间复杂度为O(1),只用了一个100×100的二维数组;时间方面主要有两个嵌套循环,一个用来求最大数,一个用来输入并保存数据,for(int p=n-1;p>=1;p--)for(int q=1;q<=p;q++),时间复杂度为O(p+q)
5、心得体会:这次的题目主要有难度的是第三题,而第三题可以按照找出两个序列的最长公共子序列,看他们共同的成分以及需要改的成分,可以实现,不过还有一点问题尚未解决,有些情况不适用,仍在解决中。

浙公网安备 33010602011771号