算法第三次作业

一、数字三角形的动态规划分析
1.1 递归方程式、定义及边界条件
dp[i][j]:从数字三角形顶部(1行1列)到i行j列时的最大路径和。
递归方程式:每一步只能从上方或左上方到达当前位置(从下往上分析时),因此:dp[i][j] = max(dp[i-1][j-1], dp[i-1][j]) + triangle[i][j]
边界条件:数字三角形的顶部(1行1列)的最大路径和就是其自身,即dp[0][0] = triangle[0][0]。

1.2 填表法的维度、范围、顺序及原问题最优值
二维表dp维度与数字三角形一致(n行,每行列数等于行号)。
填表范围为覆盖数字三角形的所有元素(从1行到n行,每行从1列到当前行的列数),从下往上逐行填充表格,先填第1行,再依次填第2行直到第n行。
原问题的最优值:n行中dp[n-1][j]的最大值。

1.3 时间和空间复杂度
时间复杂度:需遍历数字三角形的所有元素,共1+2+3+…+n = n(n+1)/2个元素,时间复杂度为O(n^2)。
空间复杂度:若使用二维dp表,空间复杂度为O(n^2);若优化为一维数组(从下往上填充时,仅保留上一行的状态),空间复杂度可降为O(n)。

二、对动态规划算法的理解和体会
动态规划的核心是将原问题分解为重叠子问题,通过记录子问题的最优解(状态)避免重复计算,其关键在于找到"最优子结构"和"状态转移方程"。以“数字三角形”为例:原问题的最大路径和依赖于“上一行相邻位置的最大路径和”(最优子结构),通过状态转移方程可逐步推导得到结果。动态规划的优势是用空间换时间,将暴力解法的指数级复杂度降为多项式级。动态规划的设计需要明确“状态定义”;空间优化(如一维数组)则体现了其灵活性——在不影响正确性的前提下,可通过压缩状态减少资源消耗。

posted @ 2025-11-18 23:30  杨月涵  阅读(3)  评论(0)    收藏  举报