1#include <iostream>
 2#include <fstream>
 3
 4using namespace std;
 5
 6int m,n;
 7int a[201],w[201];
 8long long t[201][201];
 9long long ans;
10
11void input();
12void dp();
13void output();
14
15int main(){
16    input();
17    dp();
18    output();
19    return 0;
20}

21
22void input(){
23     cin>>n;
24     m=2*n-1;
25     for(int i=1;i<=n;i++) cin>>a[i];
26     for(int i=1;i<n;i++) w[i]=a[i+1];w[n]=a[1];
27     for(int i=n+1;i<=m;i++){
28             a[i]=a[i-n];
29             w[i]=w[i-n];
30             }

31     }

32
33void dp(){
34     int temp=0;
35     int j;
36     memset(t,0,sizeof(t));
37     for(int p=1;p<n;p++)
38        for(int i=1;i<m;i++){
39                j=i+p;
40                if(j<=m){
41                         for(int k=i;k<j;k++)
42                         t[i][j]=max(t[i][j],t[i][k]+t[k+1][j]+a[i]*w[k]*w[j]);
43                }

44        }

45     for(int i=1;i<=n;i++) ans=max(ans,t[i][i+n-1]);
46     }

47
48void output(){
49     cout<<ans<<endl;
50     }

51
posted on 2008-04-23 22:59  vector  阅读(148)  评论(0编辑  收藏  举报