week3 作业

(一)最优子结构与递归方程
设 dp [i][j] 表示从顶部走到第 i 行第 j 列的最大路径和。最优子结构表现为:dp [i][j] = max (dp [i-1][j-1], dp [i-1][j]) + 三角形第 i 行第 j 列数值(j>0 且 j<i)。边界条件:dp [0][0] = 三角形顶部数值;第 i 行第 0 列 dp [i][0] = dp [i-1][0] + 当前数值;第 i 行第 i 列 dp [i][i] = dp [i-1][i-1] + 当前数值。
(二)填表法设计
表为 n×n 二维数组,填表范围是每行 1 到 i 列(i 从 1 到 n-1)。填表顺序按行从上到下、每行从左到右,确保计算当前子问题时,依赖的上一行子问题已求解。原问题最优值为第 n-1 行 dp [n-1][j](j 从 0 到 n-1)中的最大值。
(三)复杂度分析
时间复杂度:需填充 O (n²) 个表格元素,每个元素计算耗时 O (1),故为 O (n²)。空间复杂度:二维数组存储为 O (n²),优化为一维数组(滚动存储)可降至 O (n),不影响结果正确性。
动态规划算法理解与体会:动态规划核心是分解重叠子问题,利用最优子结构,通过存储子问题解避免重复计算,大幅提升效率。其适用于具备这两个关键特征的问题,如背包、路径规划等。状态定义是关键,合理的 dp [i][j] 定义能简化计算。实践中,动态规划将复杂问题转化为有序的子问题求解,既清晰又高效,深刻体会到 “以空间换时间” 的算法智慧。

posted on 2025-11-17 21:41  薄荷味的棉花糖  阅读(0)  评论(0)    收藏  举报

导航