讨论 / 大牛看一下,为什么错了?
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.

查看更多回复
提交回复