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.心得体会

本次实践深化了我对于动态规划的理解,一开始并没有想到有效的算法,经过老师的提醒和看书之后终于有了理解,改变了思路,自下而生思考这个问题,最后大的方向对了,剩下的细枝末节就在慢慢的调试中渐渐完美。最终做出这道题目的我十分的兴奋,对日后的学习也有个更浓厚的兴趣。
posted on 2018-11-04 20:00  Homerlam  阅读(78)  评论(0编辑  收藏  举报