区间动态规划

区间动态规划

所谓区间动规,顾名思义,就是在一段区间上进行的动态规划。通常由一个二维数组dp[i][j]表示。一般i,j 的含义有以下几种。

  • 表示从 i 个物品到第 j 个物品的最优值
  • 表示从 i 开始,数据规模为 j 时的最优值
  • 表示前 i 个物品,分成 j 段时的最优值

这几个是我做题时常见的几种下标的含义,当然还有很多很多种,i j 的含义是灵活多变的,根据题意来构造合适的dp数组,甚至有的题可以扩展成三维数组,也可以压缩成一维数组。

一般的写作模板如下

for(int len = 2;len <= n;len ++ ){
	for(int i = 1;i <= n;i ++){
		int j = i + len - 1;
		for(int k = i + 1;k <= j;k ++ ){
			dp[i][j] = max/min(dp[i][k] + dp[k][j],dp[i][j]);
		}
	}
}

空谈误国,实干兴邦

下面是我写过的几个区间动规的题目,仅供参考(点击即可查看)

  • 游艇租用问题
  • 石子合并问题
  • 四柱汉诺塔问题
  • 删数问题
  • 最大k乘积问题
  • 最大的算式

你可能感兴趣的:(动态规划)