算法第三次作业

  1. 实践报告
    1.1 递归方程式、定义与边界条件
    定义:设 dp[i][j]表示从第 i行第 j列元素到三角形底部的最大路径和。
    递归方程式:
    dp[i][j]=triangle[i][j]+max(dp[i+1][j],dp[i+1][j+1])
    边界条件:当 i=n−1时,dp[n−1][j]=triangle[n−1][j](0≤j≤n−1)
    1.2 填表法分析
    表的维度:二维表,维度为 n×n
    (实际有效区域为三角形,第 i行有 i+1个元素)。
    填表范围:行范围 i从 n−2到 0,列范围 j 从 0 到 i。
    填表顺序:从倒数第二行开始,逐行向上填写;每行内从左到右填写。
    原问题的最优值:dp[0][0]
    1.3 时间和空间复杂度
    时间复杂度:O(n 的2次方)
    空间复杂度:O(n)
  2. 对动态规划算法的理解和体会
    动态规划是一种通过分解子问题、利用子问题最优解推导原问题最优解的算法思想。其核心在于识别最优子结构和重叠子问题。动态规划的解题步骤具有通用性:先定义状态,再推导递推公式,最后确定边界条件和填表顺序。空间优化是动态规划的重要技巧,可将空间复杂度从二维优化到一维,在数据规模较大时能显著提升程序的运行效率。
posted @ 2025-11-18 23:48  一只大肥羊  阅读(0)  评论(0)    收藏  举报