#include<bits/stdc++.h>
using namespace std;
const int maxn=99999999;
int f[110][110],head[110],tail[110];
int main()
{
int n,i,j,k;
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",&head[i]);
for(i=1;i<n;++i)
tail[i]=head[i+1];
tail[n]=head[1];
for(j=2;j<=n;++j)
{
for(i=1;i<=n;++i)
{
for(k=1;k<=j-1;++k)
{
int next=((i+k-1)%n)+1;
int end=(next+j-k-1)%n;
if(next+j-k-1==n)
end=n;
if(f[i][j]<f[i][k]+f[next][j-k]+head[i]*head[next]*tail[end])
f[i][j]=f[i][k]+f[next][j-k]+head[i]*head[next]*tail[end];
}
}
}
int max=0;
for(i=1;i<=n;++i)
if(max<f[i][n])
max=f[i][n];
printf("%d",max);
return 0;
}
1580 能量项链
最新推荐文章于 2024-05-21 20:29:42 发布