能量项链(环形处理)

算法:动态规划

#include<iostream>
#include<algorithm>
using namespace std;
const int N=210;
int a[N],f[2*N][2*N];

int main(void){
    int n,maxl=-1;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        a[n+i]=a[i];
    }
    for(int i=2;i<=n;i++)
        for(int j=1;j<=2*n-i+1;j++){
            int l=j,r=j+i-1;
            for(int k=l;k<r;k++){
                f[l][r]=max(f[l][r],f[l][k]+f[k+1][r]+a[l]*a[k+1]*a[r+1]);
                maxl=max(f[l][r],maxl);
            }
        }
    cout<<maxl<<endl;
    return 0;
}

 

posted @ 2019-07-24 15:00  YF-1994  阅读(201)  评论(0编辑  收藏  举报