算法第三章上机实践报告

1、实践题目

数字三角形

2、问题描述

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

3、算法描述

定义一个二维数组b[i][j]来记录最短路径。自底向上比较a[i+1][j]和a[i+1][j+1]的大小,取较小值加上本身的a[i][j]后把值赋给b[i][j],得出第i行的数到下一行的最短路径,以此往上推,便可得出第1行到最后一行的最短路径。

4、算法时间及空间复杂度分析

代码中有两个for循环,因此时间复杂度为O(n2)

代码调用了两个二维数组,因此空间复杂度为O(n2)

5、心得体会(对本次实践收获及疑惑进行总结)

原本对动态规划算法不是很理解,实践过程中也慢慢地理解了,特别是在做数字三角形的时候十分清晰地理解到动态规划算法的思想及其解题过程。

posted on 2018-11-11 19:09  思渊鱼  阅读(107)  评论(0编辑  收藏  举报

导航