# 区间动态规划 --- ## 1、区间合并问题 指在区间上进行递推的场景,求一段区间上的最优解,主要通过合并小区间的最优解进而求得大区间最优解的一种dp算法。 --- ### 例如-石子合并: N堆石子排成一列,现要将石子有次序的合并成一堆,规定每次只能选相邻的两堆合并成一堆,代价为合并后的一堆的石子数。 请计算将N堆石头合并成一堆需要的最大代价。 --- ## 2、递归和记忆搜索 区间合并问题用递归思路是非常好理解的。 [L, R]的区间最优解,必然由两个子区间[L, k]和[k+1, R]合并而来,因此可枚举k的位置求最大值。 --- 定义f(L, R)为[L, R]的最优解,则有: ``` int f(int L, int R) { if(L==R) return 0; int ans = 0, d=a[R]-a[L-1]; for(int k=L; k