区间(环形)dp
Posted Hell0er
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区间(环形)dp相关的知识,希望对你有一定的参考价值。
#include <iostream> using namespace std; const int MAXN=110; int n; int a[MAXN*2]; int dp[MAXN*2][MAXN*2]; int main() { cin>>n; for (int i=1;i<=n;i++) { cin>>a[i]; a[i+n]=a[i]; } for (int len=2;len<=n;len++) //枚举合并长度 { for (int i=1;i+len-1<=2*n;i++) //枚举左端点 { int j=i+len-1; //右端点 for (int k=i;k<=j-1;k++) //枚举间断点 { dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]+a[i]*a[k+1]*a[j+1]); } } } int ans=0; for (int i=1;i<=n;i++) { ans=max(ans,dp[i][i+n-1]); } cout<<ans<<endl; return 0; }
以上是关于区间(环形)dp的主要内容,如果未能解决你的问题,请参考以下文章