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 。
(3)边界条件
当i=j时,dp[i][j]=0,表示只有一堆石头时不用合并。
(4)时间、空间复杂度分析
需要用到三重循环,时间复杂度为O(n^3);需要用到一个二维数组dp[n][n],空间复杂度为O(n^2)。
2.对动态规划法的体会和思考
动态规划法,简称DP,用以解决有很多重叠子问题的问题。动态规划算法通常用于求解具有最优子结构性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划法产生的子问题一般不是相互独立的,而是相互联系,更大的子问题的最优解依赖于更小的子问题的最优解,层层递归,最终得到原问题的最优解。