算法第三章作业
一、动态规划求解步骤分析
1.1 递归方程式
定义:设 dp [i][j] 表示从第 i 行第 j 列元素到三角形底部的最优路径和,triangle [i][j] 为该位置的元素值。
递归方程:dp[i][j] = triangle[i][j] + max(dp[i+1][j], dp[i+1][j+1])
边界条件:当 i 为三角形最后一行时,dp [i][j] = triangle [i][j]
1.2 填表法细节
表的维度:基础为二维表 dp [n][n](n 为三角形行数),可优化为一维表 dp [n]。
填表范围:行 i 从 n-2 逆序到 0,列 j 从 0 到 i。
填表顺序:自底向上、从左到右(先计算底层子问题,再推导上层)。
最优值位置:dp [0][0](起点到终点的最优路径和)
1.3 复杂度分析
时间复杂度:O (n²),需遍历三角形所有 n (n+1)/2 个元素,每个元素计算仅需 O (1)。
空间复杂度:二维表实现为 O (n²)。
二、动态规划算法的理解和体会
动态规划的核心是 “拆分问题、复用子解”,通过将原问题分解为重叠子问题,利用最优子结构性质递推全局最优。其关键在于定义清晰的状态和递归方程,将递归的 “重复计算” 转化为 “表格存储”,大幅提升效率。
实践中,需确定合理的填表顺序。它更适合解决多阶段决策、最优目标类问题,本质是用空间换时间,平衡效率与资源占用。

浙公网安备 33010602011771号