算法第三章作业
1、
1.1
递归方程式:m[i][j] = triangle[i][j] + max(m[i+1][j], m[i+1][j+1]);
定义:m[i][j] 表示从第 i 行第 j 列的数字出发到达底部的最大路径和,triangle[i][j]是该位置本身的值
边界条件:m[n-1][j] = triangle[n-1][j] 最后一行各位置的最大路径和就是该位置本身的值
1.2
表的维度:n x n
填表范围:行范围:从 n-2 到 0(自底向上) 列范围:对于第 i 行,从 0 到 i
填表顺序:自底向上,从最后一行开始逐行向上计算
原问题的最优值是哪个表格元素:m[0][0]
1.3
时间复杂度:O(n2)
空间复杂度 :O(n2)
2、
对动态规划算法的理解和体会:
数字三角形问题完美展现了最优子结构特性,即全局最优解必然包含子问题的最优解,同时存在大量重叠子问题,这正是动态规划的用武之地。采用自底向上的填表法,从边界条件出发逐步构建更大问题的解,不仅避免了递归带来的重复计算,还使得问题求解过程清晰直观。这种将复杂问题分解为相互关联的简单子问题,并通过系统化填表构建最终解的思维方式,为我解决其他优化问题提供了宝贵的方法论指导。
浙公网安备 33010602011771号