434
社区成员
发帖
与我相关
我的任务
分享1、动态规划方程
(1)状态表示:
dp[i][j]表示将第 i 堆石子到第 j 堆石子合并成一堆的最小代价
(2)状态方程:
dp[i][j] = min(dp[i][k] + dp[k+1][j] + sum[i][j]),i ≤ k < j
其中sum[i][j]表示第i堆石子到第j堆石子的总质量。
(3)边界条件:
当 i = j 时,dp[i][j] = 0,即此时合并石子的代价为0。
(4)时间、空间复杂度分析:
时间复杂度为O(N^3)
空间复杂度为O(N^2)
2、结合本章的学习,总结你对动态规划法的体会和思考
动态规划是不断将一个大问题分解为若干子问题,并利用求解子问题的最优解从而获得整个问题的最优解。我认为动态规划的重中之重以及难点就是写出状态方程,而状态方程的边界条件以及数组循环的遍历方向也是我们不可忽略的问题,代码如何实现又是一个重点。所以我认为我们应该着重加强对于问题的理解分析能力,根据题目所给的内容去分析问题以及分解子问题然后进行求解。