码迷,mamicode.com
首页 > 其他好文 > 详细

区间DP模式

时间:2014-10-20 09:51:12      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:for   sp   代码   bs   c++   dp   nbsp   c   模式   

对于区间DP,首先枚举要进行操作的区间长,然后枚举操作区间的左端点,用左端点和区间长算出右端点,然后枚举区间中的点进行DP操作就好了。
下面是模式代码:
首先是P的:
For p:=1 to n do // p是区间长度,作为阶段。 
for i:=1 to n do // i是穷举的区间的起点
begin
j:=i+p-1; // j是 区间的终点,这样所有的区间就穷举完毕
if j>n then break; // 这个if很关键。
for k:= i to j-1 do // 状态转移,去推出 f[i,j]
f[i , j]= max{f[ i,k]+ f[k+1,j]+ w[i,j] } 
end; 

福利:自己翻译成C++
for(int l=1;l<=n;l++)
{
    for(int i=1;i<=n-l+1;i++)
    {
        int j=i+p-1;
        for(int k=i;k<=j;k++)
        {
            f[i][j]=max/min(f[i][j],f[i][k]+f[k+1][j]+w[i,j]);
        }
    }
}

区间DP模式

标签:for   sp   代码   bs   c++   dp   nbsp   c   模式   

原文地址:http://www.cnblogs.com/Skyvot/p/4036456.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!