day17(三) 线性规划

106 阅读1分钟
  1. 线性dp

    1. 数字三角形
      1. 状态表示: 属性:路径的最大和,即要求解的目标值。 集合:考虑以第i行第j列的数字结尾的最大和路径,其中i表示行数,j表示列数。
      2. 状态计算:
        • 集合划分:以第i行第j列的数字结尾的最大和路径可以由上一行的某个位置转移而来,即取决于上一行的子问题的最优解。
        • 状态转移方程:dp[i][j] = max(dp[i-1][j-1], dp[i-1][j]) + triangle[i][j],其中dp[i-1][j-1]表示上一行第j-1列的最大和路径,dp[i-1][j]表示上一行第j列的最大和路径,triangle[i][j]表示当前位置的数字。
        • 初始条件:dp[0][0]的初始值为triangle[0][0],表示数字三角形的顶点

    2.区间dp

    1. 石子合并
      1. 状态表示:

      • 属性:最小的合并代价,即要求解的目标值。
      • 集合:考虑合并前i堆石子的最小代价,其中i表示石子的数量。
      1. 状态计算:

      • 集合划分:合并前i堆石子的最小代价可以由前面的子问题转移而来,即取决于前面的合并状态。
      • 状态转移方程:dp[i] = min(dp[k] + dp[i-k] + cost[i]),其中dp[k]表示前k堆石子的最小代价,dp[i-k]表示剩余的石子堆的最小代价,cost[i]表示合并第i堆石子的代价。
      • 初始条件:dp[0]的初始值为0,表示没有石子需要合并。