第三章作业

1.1 递归方程式

由“必须在 2N-1 个单位时间穿越出去”可知,商人只能向右或向下走。

设 a[i][j] 为格子费用,dp[i][j] 为从左上角走到 (i,j) 的最小通行费(0 下标):

dp[0][0] = a[0][0]

第一行:
dp[0][j] = dp[0][j-1] + a[0][j]

第一列:
dp[i][0] = dp[i-1][0] + a[i][0]

其余:
dp[i][j] = a[i][j] + min(dp[i-1][j], dp[i][j-1])

含义:到达 (i,j) 只能从上方或左方来,取费用较小者。

1.2 填表法

表的维度:二维表 dp[N][N]。

填表范围:i=0..N-1,j=0..N-1。

填表顺序:先初始化 dp[0][0],再填第一行和第一列;其余按行从上到下、每行从左到右填写。

原问题最优值:dp[N-1][N-1]。

1.3 复杂度

时间复杂度:O(N^2)。

空间复杂度:O(N^2)。由于 dp[i][j] 只依赖上一行和当前行前一列,也可优化到 O(N)。

理解与体会

动态规划的关键是定义状态、找转移、定边界、定顺序。本题的突破口是“2N-1 时间”限制了只能向右或向下走,于是状态 dp[i][j] 很自然。填表顺序要保证依赖项已计算。动态规划通过保存子问题答案避免重复搜索,效率高。实际做题应先保证转移和边界正确,再考虑空间优化。

posted @ 2026-11-03 21:00  浮云qqq  阅读(5)  评论(0)    收藏  举报