讨论 / 帮忙看看我的程序,看看什么 地方错了,不要发别的程序来!
f(x) 2009-04-21 05:36:00
点我顶贴 收藏 删除
program beggs;

var c1,v1,e,b:array[0..6000] of longint;

f:array[0..6000,0..60] of longint;

vv,v,k,i,u,j,kk,m,n,z,x,y,t,s,zym,zhz:longint;

f1:text;

begin

assign(f1,’zin.in’);

reset(f1);

read(f1,kk,vv,n);

for i:=1 to n do

read(f1,v1[i],c1[i]);

for i:= 0 to vv do

for j:= 1 to kk do

begin

f[i,j]:=-maxlongint;

e[i]:=0;

end;

e[0]:=1; f[0,1]:=0; close(f1) ;

for i:= 1 to n do

for j:= vv downto v1[i] do

begin

for k:= 1 to kk do

b[k]:=f[j,k];

zym:=1;

zhz:=1;

x:=e[j-v1[i]];

y:= e[j];

u:=x+y;

if u>kk then u:=kk;

e[j]:=u;

for k:= 1 to u do

begin

if ((b[zym]<f[j-v1[i],zhz]+c1[i])and(zhz<=x))or(zym>y)

then

begin

f[j,u] := f[j-v1[i],zhz]+ c1[i];

inc(zhz) ;

end

else

begin

f[j,u]:= b[zym];

inc(zym);

end;

end;

end;

s:=0;

for i:= 1 to kk do

if f[vv,i]>0 then

inc(s,f[vv,i]);

writeln(s);

end.

#1 f(x)@2009-04-21 05:01:00
回复 删除
有个错误我把u变成k 了

但是还是过不了

#2 f(x)@2009-04-21 05:15:00
回复 删除
我把记录每个点个数的e[i] 变成了 f[i,0] 就AC了

虽然过了...但是还是希望各位大牛 告诉我原因!!

#3 351130668zhima@2009-04-21 05:35:00
回复 删除
改过来就过了啊....

#4 f(x)@2009-04-21 05:36:00
回复 删除
谢谢提醒..

刚刚把 e-6000 变成 e-600 了...!

查看更多回复
提交回复