讨论 / 为什么错了
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.

查看更多回复
提交回复