算法第三章作业
1.实践报告
1.1 递归方程:dp[i][j]=a[i][j]+min(dp[i-1][j],dp[i][j-1]) (i>1,j>1)
定义:设 dp[i][j]:从起点 (1,1) 走到格子 (i,j) 所需要的最低通行费。a[i][j]代表格子 (i,j) 本身的通行费。
边界:dp[1][1]=a[1][1]
第一行:dp[1][j]=dp[1][j-1]+a[1][j]
第一列:dp[i][1]=dp[i-1][1]+a[i][1]
1.2 表维度:二维数组 dp[N+1][N+1]
填表范围:1 <= i <= N, 1 <= j <= N
填表顺序:从上到下、每行内从左向右。
最优值:dp[N][N]
1.3 时间复杂度:O(N^2),每个格子仅常数次运算;
空间复杂度:O(N^2),存放 dp 二维表。
2.理解体会
动态规划利用最优子结构、子问题重叠,存储子问题结果避免重复计算。先设计状态,再推导转移方程,自底向上填表求解,会综合比较所有子方案,适合求全局最优,是以空间换取时间的高效思想。

浙公网安备 33010602011771号