【題目描述】
題做多了總會遇到重複的:原博客點擊這裏
const int N=400+5;
int n,m,t;
int i,j,k;
int a[N];
int head[N],tail[N];
int dp[N][N];
int main()
{
IOS;
while(cin>>n){
for(i=1;i<=n;i++) cin>>head[i],head[i+n]=head[i];
for(i=1;i<=2*n-1;i++) tail[i]=head[i+1];
tail[2*n]=head[1];
ms(dp,0);
for(int len=2;len<=n;len++){
for(i=1;i+len-1<=n*2;i++){
j=i+len-1;
for(k=i;k<j;k++){
dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]+head[i]*tail[k]*tail[j]);
}
}
}
int maxx=0;
for(i=1;i<=2*n;i++)
maxx=max(maxx,dp[i][i+n-1]);
cout<<maxx<<endl;
goto loop;
}
loop:
//PAUSE;
return 0;
}