算法第三章作业

1.1递归方程式、定义及边界条件
递归方程式:设dp[i][j]表示从第i行第j列的数字出发,走到三角形最底层的最大路径和。对于第i行第j列的数字,下一步可向左下(i+1行j列)或右下(i+1行j+1列)走,因此其最大路径和为自身数值加上这两个方向中路径和的较大值,即 dp[i][j] = array[i][j] + max(dp[i+1][j], dp[i+1][j+1])。

边界条件:当到达最底层(第n-1行,行索引从 0 开始)时,无法再向下走,此时最大路径和就是数字本身,即 dp[n-1][j] = array[n-1][j]。

1.2填表法的表维度、填表范围、顺序及原问题最优值
表的维度:使用n×n的二维数组(因数字三角形有n行,每行最多n个元素,用二维数组存储便于计算)。

填表范围:从第n-2行开始向上遍历,每行内遍历第0列到第i列(i为当前行号)。
填表顺序:从下往上逐行填写,每行内从左到右填写。

原问题最优值:三角形顶点的最大路径和,即二维数组的dp[0][0]。

1.3时间和空间复杂度分析
时间复杂度:两层循环,外层循环执行n-1次(从n-2行到第0行),内层循环对第i行执行i+1次操作,因此时间复杂度为O(n²)。

空间复杂度:使用n×n的二维数组存储状态,空间复杂度为O(n²)。

2.这一次的动态规划与上一次的分治法有共同点:需要把大问题拆分为小问题。分治法从大问题逐步缩小范围直接定位;动态规划从子问题逐层累积得到最终结果。所以动态规划需要过表格记录结果,从而得到最终结果。

posted @ 2025-11-18 23:15  GFLMD  阅读(5)  评论(0)    收藏  举报