1.实践题目
7-1 数字三角形
2.问题描述
给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。
3.算法描述
①创建两个二维数组,一个存放三角形,一个存放最大数字总和。②从下至上在a[n-1][i]+a[n][i]和a[n-1][i]+a[n][i+1]中将较大的存放在max[n-1][i]中。
③到最后max[1][1]就是结果。
4.算法时间及空间空间复杂度分析
两个for执行次数为n(n-1)/2,因此时间复杂度为O(N^2)
程序执行所需要的空间为n^2/2,因此空间复杂度为O(N^2)
5.心得体会
本次实践深化了我对于动态规划的理解,一开始并没有想到有效的算法,经过老师的提醒和看书之后终于有了理解,改变了思路,自下而生思考这个问题,最后大的方向对了,剩下的细枝末节就在慢慢的调试中渐渐完美。最终做出这道题目的我十分的兴奋,对日后的学习也有个更浓厚的兴趣。