算法第三章实践报告
最低通行费
1.1
递归方程式:
dp[1][1] = a[1][1]
dp[1][j] = dp[1][j-1] + a[1][j] (j ≥ 2)dp[i][1] = dp[i-1][1] + a[i][1] (i ≥ 2)
dp[i][j] = a[i][j] + min(dp[i-1][j], dp[i][j-1]) (i,j ≥ 2)
方程式的定义:
a[i][j] 表示第 i 行、第j列格子的费用
dp[i][j]表示从 (1,1) 到 (i,j) 的最小费用,包含起点和 (i,j) 格子的费用
边界条件:
当 i=j=1 时:dp[1][1] = a[1][1]当 i=1、j≥2 时:dp[1][j] = dp[1][j−1] + a[1][j]当 j=1、i≥2 时:dp[i][1] = dp[i−1][1] + a[i][1]
1.2
表的维度:
行和列都是N
填表范围:
起点:dp[1][1]
第一行:dp[1][j],2 ≤ j ≤ N
第一列:dp[i][1],2 ≤ i ≤ N
内部格子:dp[i][j],2 ≤ i ≤ N,2 ≤ j ≤ N
填表顺序:
先计算起点 dp[1][1],再填第一行和第一列。然后令 i 从 2 到 N 递增;对于每个 i,令 j 从 2 到 N 递增,依次填入 dp[i][j]。这样计算每个内部格子时,它上方和左方的状态都已计算完成

浙公网安备 33010602011771号