测评机: Xeost[5]
得分: 60分
提交日期: 2010-8-4 16:11:00
有效耗时: 406毫秒
测试结果1: 通过本测试点|有效耗时172ms
测试结果2: 通过本测试点|有效耗时47ms
测试结果3: 测试结果错误.错误结果为:6366794
5 3 2 1 4 12 8 6 7 10 9 11 14 13 15
正确结果应为:6366794
5 3 1 2 4 12 8 6 7 10 9 11 14 13 15
测试结果4: 测试结果错误.错误结果为:317358969
5 3 2 1 4 16 12 8 6 7 10 9 11 14 13 15 18 17 19 20
正确结果应为:317358969
5 3 1 2 4 16 12 8 6 7 10 9 11 14 13 15 18 17 19 20
测试结果5: 通过本测试点|有效耗时47ms
测试结果6: 通过本测试点|有效耗时47ms
测试结果7: 通过本测试点|有效耗时47ms
测试结果8: 通过本测试点|有效耗时46ms
测试结果9: 测试结果错误.错误结果为:6366794
5 3 2 1 4 12 8 6 7 10 9 11 14 13 15
正确结果应为:6366794
5 3 1 2 4 12 8 6 7 10 9 11 14 13 15
测试结果10: 测试结果错误.错误结果为:317358969
5 3 2 1 4 16 12 8 6 7 10 9 11 14 13 15 18 17 19 20
正确结果应为:317358969
5 3 1 2 4 16 12 8 6 7 10 9 11 14 13 15 18 17 19 20
program t3;
var
i,j,n:integer;
s:array[1..30]of integer;
f:array[1..30,1..30,0..1] of cardinal;
max:cardinal;
k,l,sum:integer;
procedure rea;
var
i,j:integer;
begin
readln(n);
for i:=1 to n do
begin
read(s[i]);
f[i,i,0]:=s[i];
end;
for i:=1 to n do
for j:=i+1 to n do
f[j,i,0]:=1;
end;
procedure wri(h,r:integer);
begin
if (f[h,r,1]<>0) then
begin
sum:=sum+1;
s[sum]:=f[h,r,1];
wri(h,f[h,r,1]-1);
wri(f[h,r,1]+1,r);
end;
end;
begin
rea; sum:=0;
for i:=1 to n do
f[i,i,1]:=i;
for l:=2 to n do
for i:=1 to n-l+1 do
begin
j:=i+l-1;
for k:=i to j do
begin
if f[i,j,0]<f[i,k-1,0]*f[k+1,j,0]+s[k]
then begin
f[i,j,0]:=f[i,k-1,0]*f[k+1,j,0]+s[k];
f[i,j,1]:=k;
end;
end;
end;
writeln(f[1,n,0]);
wri(1,n);
for i:=1 to n-1 do
write(s[i],' ');
writeln(s[n]);
end.
题目不严谨...
比如样例
可能是3 1 2 4 5
可能 3 2 1 5 4
都一样
3
1 4
2 5
3
2 5
1 4
都可能
先序遍历是
**3
1***4
*2***5
和
**3
*2**5
1**4
得到的值都一样
题目不严谨...
你可以尝试『尽量往左偏』