1.实践题目 7-1 数字三角形
2.问题描述
给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法,
计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。
3.算法描述
求以一个的数为顶至底的数字总和
等于求以这个数左边或右边的数为顶至底的数字总和的最大值加上这个数本身
得出递推方程 m[i][j]=max( m[i+1][j], max[i+1][j+1] )+a[i][j]
从下至上填表
4.算法时间及空间复杂度分析
双重循环对维度为i乘j的表格填表 时间复杂度为O(n^2)
开了2个100*100的二维数组 空间复杂度为O(n^2)
5.心得体会
做动态规划的题目的步骤是①分析最优解的结构 ②建立递归方式(关键) ③计算最优值 ④构造最优解
分析最优子结构就是要把一个问题分成很多个小问题
建立递归方程的关键是要找一个可以保存最优值的数组,利用这个数组,分多钟情况进行递推
原文地址:https://www.cnblogs.com/iamrounan/p/9885999.html
时间: 2024-10-29 17:31:56