第三章作业

1.实践报告
1.1定义:numbers[i][j]表示在第i行第j列的数字。c[i][j]表示从第i行第j列的数字出发,到达三角形底部的数字总和最大值。
根据最优子结构,可以得到递归方程式:从c[i][j] = numbers[i][j]+max(c[i+1][j], c[i+1][j+1])。
边界条件:c[n][j] = number[n][j]
1.2填表法中表的维度:二维表
填表范围:1<=i<=n 1<=j<=i
填表顺序:i从n-1到1,递减。j从i到1,递减。
及原问题的最优值:c[1][1]
1.3算法的时间复杂度:填充表格,O(n^2)
算法的空间复杂度:需要两个二维数组, O(n^2)
2.体会
动态规划精髓在于将复杂问题分解为相互关联的子问题,并通过存储中间结果来避免重复计算。在解决数字三角形问题的过程中,我深刻体会到动态规划的美妙之处——它不像暴力搜索那样盲目尝试所有路径,而是通过自底向上的填表方式,让每个局部最优解自然汇聚成全局最优解。许多看似复杂的问题其实都有内在的规律可循,关键在于找到正确的状态定义和状态转移方程,将指数级复杂度降为多项式级别。

posted @ 2025-11-16 00:12  hhhhhhh$^#  阅读(0)  评论(0)    收藏  举报