第三次作业

1.1动态规划法求解 “数字三角形” 问题实践报告主要围绕问题展开,该问题是给定 n 行数字组成的三角形,需设计算法找出从顶部至底部路径中数字总和最大的路径,示例中最优路径为 7->3->8->7->5,总和为 30;求解过程中,先定义 dp [i][j] 表示从顶部 (0,0) 走到第 i 行第 j 列的最大路径和,推导得出递归方程式 dp [i][j] = max (dp [i-1][j-1], dp [i-1][j]) + triangle [i][j],边界条件包括顶点 dp [0][0] = triangle [0][0]、第一列 dp [i][0] = dp [i-1][0] + triangle [i][0]、最后一列 dp [i][i] = dp [i-1][i-1] + triangle [i][i];

1.2填表采用 n×n 二维表格,按从上到下、从左到右顺序填充第 i 行 j=0 至 j=i 的有效位置,原问题最优值为最后一行 dp [n-1][0] 至 dp [n-1][n-1] 中的最大值;

1.3算法时间复杂度为 O (n²),基础版本空间复杂度为 O (n²),优化后可降至 O (n);

2.通过该问题可体会到动态规划核心是分解子问题、存储子解、避免重复计算,依赖最优子结构和重叠子问题特征,与贪心算法相比能实现全局最优,解题遵循定义状态、推导转移方程、确定边界条件、按序填表、提取解的固定流程,是处理优化问题的强大工具,需结合经典问题练习以灵活应用。

posted @ 2025-11-18 20:32  36zjy  阅读(4)  评论(0)    收藏  举报