1.实践题目
7-1 数字三角形
2.问题描述
给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。
3.算法描述
①输入格式:
输入有n+1行:
第 1 行是数字三角形的行数 n,1<=n<=100。
接下来 n行是数字三角形各行中的数字。所有数字在0..99 之间。
②初始化
定义一个二维数组,将n行的数据呈直角三角形式存放在数组中。
③动态规划
从三角形底部向上依次计算保留max值。
④输出格式:
输出最大路径的值。
4.算法时间及空间空间复杂度分析
两个for执行次数为n(n-1)/2,因此时间复杂度为O(N^2)
程序执行所需要的空间为n^2/2,因此空间复杂度为O(N^2)
5.心得体会
本次实践学习到了自下而上解决问题的思想,原本是从第一行往下思考,发现不得解的情况下,想起了老师的提示,从数组的最后一行往上累加,果然轻松了不少,收获是以后会更加灵活地思考问题。
得到了编程的快乐。这是第一次在做算法作业时一次性测试成功。虽然这个题很简单,但是成就感也会激励我继续努力学习。
浙公网安备 33010602011771号