讨论 / 50分,求大牛发现问题
圆圆zry 2013-10-30 02:35:00
点我顶贴 收藏 删除
这是代码。。f[i,j]表示从j开始到j+i个合并的最大值

program energy;

var f:array[0..200,1..200] of longint;

a:array[1..300] of longint;

i,j,k,l,m,n,x,y:longint;

function max(x,y:longint):longint;

begin

if x>y then exit(x) else exit(y);

end;

begin

readln(n);

for i:=1 to n do

begin

read(a[i]);

a[i+n]:=a[i];

end;

fillchar(f,sizeof(f),0);

for i:=1 to n do

for j:=1 to n do

for k:=1 to i-1 do

f[i,j]:=max(f[i,j],f[k,j]+f[i-k,j+k]+a[j+i]*a[j+k]*a[j]);

m:=0;

for i:=1 to n do

if f[n,i]> m then m:=f[n,i];

writeln(m);

end.

#1 圆圆zry@2013-10-30 02:35:00
回复 删除
发现了。。j应该是1 to 2*n-i+1 来的
查看更多回复
提交回复