434
社区成员
发帖
与我相关
我的任务
分享1.
(1)状态表示:
sum[i][j]表示第i堆石子到第j堆的总质量;
c[i][j]表示将第i堆石子到第j堆石子合并的最小代价;
(2)状态方程
for(int k=i;k<=j;k++)
{
c=min(c[i][k]+c[k+1][j])+sum[i][j];
}
(3)临界条件:
i==j时,c[i][j]=0
(4)时间空间复杂度分析:
时间复杂度:O(n^3)
空间复杂度:O(n^2)
2.学习动态规划的体会和思考
动态规划算法利用了在运用递归算法解决问题时,子问题的重叠性,利用二维数组构建成表格的形式将这些已经解决过的子问题答案保存下来,从而提高计算时的解题效率。只要能够分析出问题的状态方程和临界条件,那么问题就可迎刃而解。