434
社区成员
发帖
与我相关
我的任务
分享状态表示:
a[N]表示每堆石子的质量,sum[i,j]表示第i堆石子到第j堆石子的总质量
v[i:j]表示第i堆石子到第j堆石子的最小总代价
状态方程:
v[i:j] = 0 ; i=j;
= min{v[i][k] + v[k+1][j] + sum[i][j]}; i<j;i<=k<j;
边界条件:
i==j
时间复杂度分析:
算法时间上界为O(n*n*n)
空间复杂度分析:
申请了一个O(n*n)的数组来存放v
状态表示、状态方程、边界条件列出来就能够写代码,但是主要是这个很难想有时候,需要一定时间的积累和思考
动态规划的过程量是状态里面的,不应该是固定的量,而是基于前者的规划