题见洛谷
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
long long ans=0;
int a[300],n,f[300][300];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
a[i+n]=a[i];
}
for(int p=1;p<=n-1;p++)
for(int i=1;i<=2*n-p;i++)
{
int j=i+p;
for(int k=i;k<=j-1;k++)
f[i][j]=max(f[i][j],f[i][k]+f[k+1][j]+a[i]*a[k+1]*a[j+1]);
}
int maxn=-10;
for(int i=1;i<=n;i++)
{
if(f[i][i+n-1]>maxn) maxn=f[i][i+n-1];
}
printf("%d",maxn);
return 0;
}