第三次作业

题目给定一个由数字组成的三角形,从顶部出发,在每一层可以选择向左下或右下的节点移动,一直走到底层,要求找出一条路径,使路径上数字之和最大,符合最优子结构性质,要到达位置
(i,j),只能从 (i−1,j−1) 或 (i−1,j) 过来,则最大路径和等于来自两个可能来源的最大值加上当前位置的数字值,因此方程式:dp[i][j]=max(dp[i−1][j−1],dp[i−1][j])+tri[i][j]。
边界条件:
当 i=0,j=0 时:
dp[0][0]=triangle[0][0]
当 j=0(每行第一个元素)时,只能从上一行同一列 (i−1,0) 过来:
dp[i][0]=dp[i−1][0]+triangle[i][0]
当j=i(每行最后一个元素)时,只能从上一行前一列 (i−1,i−1) 过来:
dp[i][i]=dp[i−1][i−1]+triangle[i][i]
填表法:
表维度:二维(dp[n][n])
填表顺序:从上到下,每行从左到右。
最优值:dp[i][j]。
时间复杂度:总元素数大小规模约为O(n^2), 求解每个元素需要一次比较与加法,其时间复杂度为O(1),则总的时间复杂度为O(n^2)。
空间复杂度:二维表空间规模为O(n^2)。
2.
体会:动态规划的本质就是“用空间换时间”,把重复计算的子问题结果存起来,避免重复劳动。就像我们做数学题时把常用的公式和中间结果记在草稿纸上,下次用到时直接查,而不是重新推导。它的核心思路是:大事化小,小事化了——把复杂问题分解成小问题,先解决小问题,再组合起来解决大问题。关键是找到“这个问题的答案怎么由更小问题的答案推导出来”的规律。

posted @ 2025-11-18 15:56  Volcan0  阅读(4)  评论(0)    收藏  举报