区间动态规划

所谓区间dp,顾名思义就是在一段区间上的动态规划。

它既要满足dp问题的最优子结构无后效性外,还应该符合在区间上操作的特点。

往往会对区间进行合并操作,或是单个元素(可看成一个小区间)跨区间进行操作。

/* 先初始化DP数组 */
for(int i=1;i<=n;i++)
{
    dp[i][i] = 初始值;
}
for(int len=2;len<=n;len++)  //区间长度
    for(int i=1;i<=n;i++)        //枚举起点
    {
        int j=i+len-1;           //区间终点
        if(j>n) break;           //越界结束
        for(int k=i;k<j;k++)     //枚举分割点,构造状态转移方程
        {
            dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]+w[i][j]); //状态转移
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_40507857/article/details/81266767
今日推荐