code[vs] 1154能量项链(成环的区间dp)

来源:互联网 发布:c语言的编程环境 编辑:程序博客网 时间:2024/05/29 18:24
/*作者:桦清_L*/#include <iostream>#include <string.h>using namespace std;int dp[201][201];int a[201]={0};int main(){    int n;    cin>>n;    for(int i=1;i<=n;i++)    {        cin>>a[i];        a[n+i]=a[i]; //将数组复制一遍,即可实现环状    }    int l=2*n;    int MAX=0;    memset(dp,0,sizeof(dp));    for(int g=2;g<=n;g++)    {        for(int i=1;i<=l-g+1;i++)        {            int j=i+g-1;            for(int k=i;k<j;k++)            {                dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]+a[i]*a[k+1]*a[j+1]); //相当于 a1.l*a2.l*a2.r                MAX=max(MAX,dp[i][j]);            }        }    }    cout<<MAX<<endl;    return 0;}

0 0