第三次作业

1.实验报告
1.1
dp[i][j]=triangle[i][j]+max(dp[i-1][j-1],dp[i-1][j])、
定义:triangle[i][j]表示数字三角形中第i行第j列的数字(i,j从0开始)
边界条件:当i=0,j=0时,dp[0][0]=triangle[0][0]
当j=0时(每行第一个元素),dp[i][0]=triangle[i][0]+dp[i-1][0]
当j=i时(每行最后一个元素),dp[i][i]=triangle[i][i]+dp[i-1][i-1]
1.2
表的维度:二维表格大小为nn
填表范围:
行范围:从第0行到第n-1行
列范围:对于第i行,从第0列到第i列
原问题的最优值:最后一行的最大值,即max(dp[n-1][j])
1.3
时间复杂度:O(n^2) 总共有n(n+1)/2个元素,约为n^2
空间复杂度:O(n²) n
n的dp表
2.动态规划算法的理解和体会
理解:
动态规划可以把复杂的问题分解为相对简单的子问题来求解。其中包含多个要素,如最优子结构:问题的最优解包含其子问题的最优解,又如重叠子问题:在递归求解的过程中,相同的子问题会被多次求解
体会:
合理定义dp[i][j]是求解问题的关键,其清晰地表达了子问题的含义
边界条件的处理特别重要
通过分析问题的最优子结构从而建立正确的地推关系

posted @ 2025-11-16 13:11  minato_yukina  阅读(4)  评论(0)    收藏  举报