第三次作业
1.1
(1)该题的递归方程式:d[i][j] = a[i][j] + max(dp[i+1][j], dp[i+1][j+])。从(i,j)出发的最大路径和,等于当前数字a[i][j]加上下一行左下方或者右下方出发的最大路径和中的较大值。
(2) 边界条件:dp[n-1][j] = a[n-1][j]
1.2填表法分析
(1)维度:dp[n][n];
(2)填表范围:行:从n-2到0;列: 从0到i;
(3)填表顺序:倒数第二行开始自底向上;
(4) 最优值是dp[0][0];
1.3算法复杂度:
(1)时间复杂度为O(n^2);
(2) 空间复杂度为O(n^2);
2.理解与体会
动态规划法是将复杂问题划分为若干子问题,存储中间结果可以避免重叠子问题的重复计算。多应用于解决重叠子问题和最优子结构问题。使用动态规划法,还要根据具体情况去写递归方程和确定边界条件,以及从哪开始填表等等,这是使用该方法成功解决问题最关键的步骤。动态规划法体现了算法设计的智慧。

浙公网安备 33010602011771号