讨论 / 大牛 请告诉我哪里错了
hhy8926351 2008-06-15 21:40:00
点我顶贴 收藏 删除
program ds;

var n,i,j,k,m:integer;

max:longint;

top,wei:array[1..100]of integer;

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

begin

read(n);

for i:=1 to n do

read(top[i]);

for i:=1 to n-1 do

wei[i]:=top[i+1];

wei[n]:=top[1];

m:=2*n-1;

for i:=n+1 to m do

begin

top[i]:=top[i-n];

wei[i]:=wei[i-n];

end;

for i:=1 to n do

for j:= i+1 to i+n-1 do

for k:=i to j-1 do

if f[i,j]<f[i,k]+f[k+1,j]+top[i]*wei[k]*wei[j]

then f[i,j]:=f[i,k]+f[k+1,j]+top[i]*wei[k]*wei[j];

for i:=1 to n do

if f[i,i+n-1]>max then max:=f[i,i+n-1];

write(max);

end.

#1 sayyou@2008-06-15 02:32:00
回复 删除
‘for i:=1 to n do

for j:= i+1 to i+n-1 do

for k:=i to j-1 do

if f[i,j]<f[i,k]+f[k+1,j]+top[i]*wei[k]*wei[j]

then f[i,j]:=f[i,k]+f[k+1,j]+top[i]*wei[k]*wei[j];’

这里错了

改成

for j:=1 to n-1 do

for i:=1 to 2*n-1-j do

for k:=i to i+j-1 do

if f[i,i+j]<f[i,k]+f[k+1,j]+top[i]*wei[k]*wei[j]

then f[i,i+j]:=f[i,k]+f[k+1,j]+top[i]*wei[k]*wei[j]

(开始的时候把f[i,i]:=0;)

#2 sayyou@2008-06-15 02:32:00
回复 删除
‘for i:=1 to n do

for j:= i+1 to i+n-1 do

for k:=i to j-1 do

if f[i,j]<f[i,k]+f[k+1,j]+top[i]*wei[k]*wei[j]

then f[i,j]:=f[i,k]+f[k+1,j]+top[i]*wei[k]*wei[j];’

这里错了

改成

for j:=1 to n-1 do

for i:=1 to 2*n-1-j do

for k:=i to i+j-1 do

if f[i,i+j]<f[i,k]+f[k+1,j]+top[i]*wei[k]*wei[j]

then f[i,i+j]:=f[i,k]+f[k+1,j]+top[i]*wei[k]*wei[j]

(开始的时候把f[i,i]:=0;)

#3 sayyou@2008-06-15 02:34:00
回复 删除
(以上都打错了,不好意思)

‘for i:=1 to n do

for j:= i+1 to i+n-1 do

for k:=i to j-1 do

if f[i,j]<f[i,k]+f[k+1,j]+top[i]*wei[k]*wei[j]

then f[i,j]:=f[i,k]+f[k+1,j]+top[i]*wei[k]*wei[j];’

这里错了

改成

for j:=1 to n-1 do

for i:=1 to 2*n-1-j do

for k:=i to i+j-1 do

if f[i,i+j]<f[i,k]+f[k+1,j+i]+top[i]*wei[k]*wei[j+i]

then f[i,i+j]:=f[i,k]+f[k+1,j+i]+top[i]*wei[k]*wei[j+i]

(开始的时候把f[i,i]:=0;)

#4 hhy8926351@2008-06-15 21:40:00
回复 删除
能告诉我为什么嘛
查看更多回复
提交回复