boolean2 2008-10-27 03:48:00
点我顶贴
收藏
删除
program yy(input,output);
var
n,i,j,k:longint;
h,t:array[1..200] of longint;
dp:array[1..200,1..200] of longint;
max:longint;
procedure init;
begin
assign(input,’energy.in’);reset(input);
assign(output,’energy.ans’);rewrite(output);
readln(n);
for i:=1 to n do
read(h[i]);
for i:=1 to n-1 do
t[i]:=h[i+1];
t[n]:=h[1];
for i:=n+1 to 2*n do
begin
h[i]:=h[i-n];
t[i]:=t[i-n];
end;
close(input);
end;
procedure doit;
begin
fillchar(dp,sizeof(dp),0);
for i:=1 to n do
for j:=i+1 to i+n-1 do
for k:=i to j-1 do
if dp[i,j]<dp[i,k]+dp[k+1,j]+h[i]*t[k]*t[j]
then dp[i,j]:=dp[i,k]+dp[k+1,j]+h[i]*t[k]*t[j];
max:=0;
for i:=1 to n do
if dp[i,i+n-1]>max then max:=dp[i,i+n-1];
writeln(max);
close(output);
end;
begin
init;
doit;
end.