讨论 / 求救,为什么用动归只有50分?请大家帮帮我!!!
gaobo 2011-04-19 20:44:00
点我顶贴 收藏 删除
var

v0,k,n:longint;

v:array[1..500]of longint;

f:array[0..500,0..500]of real;

l:real;

i,j:integer;

function max(a,b,c:real):real;

begin

if (a>=b)and(a>=c) then max:=a

else if (b>=a)and(b>=c) then max:=b

else if (c>=a)and(c>=b) then max:=c;

end;

begin

readln(n,v0,k);

for i:=2 to n do read(v[i]);

if (v0<v[n])or(v0>v[n]+k) then

begin

writeln(’YI DING YAO JIAN CHI JI HUA SHENG YU’);

halt;

end;

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

f[n,v0]:=v0;

for i:=n-1 downto 2 do

for j:=v[i] to v[i]+k do

f[i,j]:=max(f[i+1,j],f[i+1,j-1],f[i+1,j+1])+j;

l:=0;

for j:=v[2] to v[2]+k do

if f[2,j]>l then l:=f[2,j];

if l=0 then writeln(’YI DING YAO JIAN CHI JI HUA SHENG YU’)

else writeln((l/(n-1)):0:2);

end.

这是我的源程序,有几个测试点差零点几,这是为什么?请大家帮帮忙,帮我看看!

#1 烂笔头@2010-11-05 17:01:00
回复 删除
改用extended类型吧
#2 407137009@2010-11-05 18:29:00
回复 删除
用real可以A掉呀。。为什么呢
#3 649273254@2010-11-11 01:11:00
回复 删除
f[i,j]:=max(f[i+1,j],f[i+1,j-1],f[i+1,j+1])+j;

这一句错了,应该先求max 当f[i,j]不等于0在加j........

#4 神经病有所好转@2011-04-19 01:50:00
回复 删除
回复 地毯649273254 的帖子

why....求解释

#5 张湛二代@2011-04-19 20:44:00
回复 删除
哦哦

改成INT64也行

查看更多回复
提交回复