算法第三章作业

1.1
递归方程式:dp[i][j] = arr[i][j] + max(dp[i+1][j], dp[i+1][j+1])
定义:dp[i][j]指从三角形第i行j列元素到三角形底部的最大路径和
边界条件(初始化):若索引从1开始,dp[i][j] = arr[i][j]
1.2
维度:表的维度是二维,nn
填表范围:从第n-1行到第1行,每行的所有列
填表顺序:从下到上,从左到右
1.3
时间复杂度:因为要填充n
n大小的表,所以时间复杂度为O(n^2)
空间复杂度:二维dp数组的话就是O(n^2),也可根据数字三角形的数学规律优化为一维数组存储,优化后可以减小到O(n)

2
动态规划算法核心是将问题分割成递归的子问题,根据递归方程式的结果,另开一个数组存储子问题结果来避免重复运算,提高算法效率。例如在数字三角形例题中,想要求顶点到底部的最大路径和,就从结果所求的最底部开始思考,可以将结果拆分为最底部元素值加上最大的上一步路径。从而得出递归方程式。相比穷举法O(2n)的时间复杂度,O(n2)的时间复杂度大大缩小了。这样子的思想可以在最长公共子序列等问题中得到运用。

posted @ 2025-11-16 00:10  菜心炒肉片  阅读(0)  评论(0)    收藏  举报