讨论 / 大牛帮帮忙,第二测试点错,怎么回事呀?90分
qdzcslj 2011-02-19 20:52:00
点我顶贴 收藏 删除
type data=record

l:longint;

r:longint;

end;

var a:array[0..100] of data;

f:array[0..100,0..100] of longint;

n,max1,max,i,j,k,k1,l,i1,temp,j1,k2:longint;

procedure init;

var i:longint;

begin

readln(n);

read(a[0].l);

for i:=1 to n-1 do

if i<>n-1 then begin

read(a[i].l);

a[i-1].r:=a[i].l;

end

else begin

read(a[i-1].r);

a[i].l:=a[i-1].r;

a[i].r:=a[0].l

end;

end;

function maxs(a,b:longint):longint;

begin

maxs:=a;

if a<b then maxs:=b;

end;

begin

init;

max:=0;

for k:=0 to n-1 do begin

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

for l:=2 to n do

for i1:=k to k+n-l do begin

i:=i1 mod n;

j1:=i1+l-1;

j:=j1 mod n;

max1:=0;

for k2:=i1 to j1-1 do begin

k1:=k2 mod n;

if l<n then

temp:=f[i,k1]+f[k1+1,j]+a[i].l*a[k1].r*a[j].r

else temp:=f[i,k1]+f[k1+1,j]+maxs(a[i].l*a[k1].r*a[k1+1].l,a[i].l*a[j].r*a[k1].r);

if temp>max1 then max1:=temp;

end;

f[i,j]:=max1;

end;

temp:=f[k,(k+n-1) mod n];

if temp>max then

max:=temp;

end;

writeln(max);

end.

#1 3022551@2008-10-18 05:41:00
回复 删除
好像我也是这种问题啊~~~~

#2 3022551@2008-10-18 05:41:00
回复 删除
你是怎么过的??

#3 殺魂の魄@2011-02-19 20:52:00
回复 删除

你的第2测试点在哪?

查看更多回复
提交回复