首页 > 代码库 > 区间DP模式
区间DP模式
对于区间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模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。