讨论 / p52 简单的动态规划 求找错
zhongjiaxin 2010-10-06 04:16:00
点我顶贴 收藏 删除
一直找不到错误。。求找错

var

fmin1,fmin2,fmax1,fmax2,sum:array[0..50,0..50] of longint;

a:array[0..50] of longint;

n,m,i,j,k,p,max,min:longint;

begin

readln(n,m);

for i:=1 to n do

begin

readln(a[i]);

while a[i]<0 do inc(a[i],10);

end;

fillchar(sum,sizeof(sum),0);

for i:=1 to n do

for j:=i to n do

sum[i,j]:=sum[i,j-1]+a[j];

fmax1:=sum; fmin1:=sum;

fmax2:=sum; fmin2:=sum;

if m=1 then

begin

writeln(sum[1,n]);

halt;

end;

for p:=2 to m-1 do

begin

for i:=1 to n-1 do

for j:=i+1 to n do

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

begin

if fmax2[i,k]*sum[k+1,j]>fmax1[i,j] then

fmax1[i,j]:=fmax2[i,k]*sum[k+1,j];

if fmin2[i,k]*sum[k+1,j]<fmin1[i,j] then

fmin1[i,j]:=fmin2[i,k]*sum[k+1,j];

end;

fmax2:=fmax1; fmin2:=fmin1;

end;

max:=0; min:=maxlongint;

for i:=1 to n-m+2 do

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

begin

if max<fmax1[i,j]*((sum[1,i-1]+sum[j+1,n]) mod 10) then

max:=fmax1[i,j]*((sum[1,i-1]+sum[j+1,n]) mod 10);

if min>fmin1[i,j]*((sum[1,i-1]+sum[j+1,n]) mod 10) then

min:=fmin1[i,j]*((sum[1,i-1]+sum[j+1,n]) mod 10);

end;

writeln(min);

writeln(max);

end.

状态: Unaccepted

测评机: Xeost[5]

得分: 80分

提交日期: 2010-10-6 19:10:00

有效耗时: 484毫秒

测试结果1: 通过本测试点|有效耗时156ms

测试结果2: 通过本测试点|有效耗时47ms

测试结果3: 通过本测试点|有效耗时47ms

测试结果4: 通过本测试点|有效耗时47ms

测试结果5: 输出过少|用户输出数据少于标准输出的50%[标准输出4位|选手输出1位]

测试结果6: 通过本测试点|有效耗时47ms

测试结果7: 通过本测试点|有效耗时46ms

测试结果8: 通过本测试点|有效耗时47ms

测试结果9: 通过本测试点|有效耗时47ms

测试结果10: 输出过少|用户输出数据少于标准输出的50%[标准输出4位|选手输出1位]

查看更多回复
提交回复