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.
这是我的源程序,有几个测试点差零点几,这是为什么?请大家帮帮忙,帮我看看!
这一句错了,应该先求max 当f[i,j]不等于0在加j........