434
社区成员
发帖
与我相关
我的任务
分享1. 请写出作业“算法第三章3”中题目“7-4 最低通行费”的动态规划方程
请按照如下格式书写动态规划方程:
(1)状态表示: dp[i][j] 表示商人从 (1,1) 到达网格位置 (i,j) 所需的最小费用。
(2)状态方程:dp[i][j] = min ( dp[i−1][j], dp[i][j−1] ) + cost[i][j];(cost[i][j] 是商人经过位置 (i,j) 时需要缴纳的费用)
(3)边界条件:
1.初始位置: dp[1][1] = cost[1][1];
2.第一行:dp[1][j] = dp[1][j-1] + cost[1][j]
3.第一列:dp[i][1] = dp[i-1][1] + cost[i][1]
(4)时间、空间复杂度分析
1. 时间复杂度:每个网格位置 (i,j) 都需要计算一次,且每次计算依赖于其上方和左方的位置,时间复杂度为 O(N^2)。
2. 空间复杂度:使用了一个二维数组 dp 来存储每个位置的最小费用,空间复杂度为 O(N^2)。
2. 结合本章的学习,总结你对动态规划法的体会和思考
动态规划的核心在于将大问题分解为相互依赖的小问题,并通过递归关系或状态转移方程来求解这些小问题。适用于具有重叠子问题和最优子结构性质的问题。其中清晰的状态定义是解决问题的关键。在定义状态时,需要确保能够唯一地表示问题中的每一个可能情况,且在求解某一个小问题时要确保解决这个问题所需要的子问题都已经被解决,这需要一个合适恰当的填表顺序。