算法第三章作业

1.实践报告
1.1递归方程式:
dp[i][j] = a[i][j] + max{dp[i+1][j], dp[i+1][j+1]}

定义:
dp[i][j]为:从第i行第j列元素(下标从 0 开始)到三角形底部的最大路径和; a[i][j]是三角形i+1行第j+1个数字

边界条件:
当i为三角形最后一行(即i = n-1,n为总行数)时,路径无法继续向下延伸,因此从该元素到顶部的最大路径和就是其自身值:dp[n-1][j] = a[n-1][j] (j >= 0 && j <= n-1)

1.2
给出填表法中表的维度:
二维表格dp,n行n列

填表范围:
dp[i][j], 其中要满足(i>=0 && i<=n-1), (j>=0 && j<=i)

填表顺序:
自底向上填充每行,每行从左往右填充。

原问题的最优值是第dp[0][0]表格元素

1.3 分析该算法的时间和空间复杂度
时间复杂度:需要计算的元素数量为三角形的总元素数:1 + 2 + ... + n = n(n+1)/2,时间复杂度约为O(n²)。

空间复杂度:用二维数组dp存储所有中间结果,空间复杂度为O(n²)

2.你对动态规划算法的理解和体会
动态规划的核心是:用存储子问题解的方式,解决具有最优子结构(原问题最优解包含子问题最优解)和子问题重叠(子问题重复出现)的问题,避免重复计算。我认为如何描述子问题是比较难的一步。

posted @ 2025-11-18 19:19  lachi  阅读(0)  评论(0)    收藏  举报