434
社区成员
发帖
与我相关
我的任务
分享1、(1)状态表示:arr[i]表示第i对石子的重量;d[i][j]表示合并第i堆到第j堆石子的最小代价
(2) 状态方程:d[i][j] = min {d[i][j-2] + arr[j-1] + arr[j], d[i+2] + arr[i] + arr[i+1]}, j-i > 1;
= arr[i] + arr[j], j-i = 1;
(3)边界条件:j - i = 1;
(4)时间、空间复杂度分析:O(n^2)
2、动态规划算法就是通过不断地拆分问题,但是这里和之前的递归又有所不同,因为动态规划类的问题中,分解得到的子问题一般不会是相互独立的,也就是说有可能得到相同的子问题,所以在计算中,如果单单应用了递归,有些子问题就会被重复计算。因此一般需要用动态规划解决的问题需要有最优子结构性质和重叠子问题性质。