WIngfly 2008-05-21 03:47:00
点我顶贴
收藏
删除
program y08m05d20;
var tou,wei:array [1..110] of longint;dp:array [1..210,1..210] of longint;
n,i,j,k,p,max,tmp:longint;
begin
read(n);
for i:=1 to n do begin read(tou[i]);tou[i+n]:=tou[i];end;
for i:=2 to n do begin wei[i-1]:=tou[i];wei[i-1+n]:=tou[i];end;
wei[n]:=tou[1];wei[2*n]:=tou[1];
fillchar(dp,sizeof(dp),0);
for p:=1 to n-1 do
for i:=1 to 2*n-2 do
begin
j:=i+p;
if(j>2*n-1) then break;
for k:=i to j-1 do
begin
if (dp[i,j]<dp[i,k]+dp[k+1,j]+tou[i]*wei[k]*wei[j])
then dp[i,j]:=dp[i,k]+dp[k+1,j]+tou[i]*wei[k]*wei[j];
end;
end;
tmp:=0;
for i:=1 to n do
begin
if tmp<dp[i,i+n-1] then
tmp:=dp[i,i+n-1];
end;
write(tmp);
end.