讨论 / 怎么会错?
zhujy 2007-11-10 21:24:00
点我顶贴 收藏 删除
高手帮忙看一下

program rom;

var

v,w,s:array[1..500]of longint;

b,f:array[0..500,0..5000]of longint;

n,i,j,mon:longint;

function max(x,y:longint):longint;

begin

if x>y then max:=x

else max:=y

end;

procedure print(k,mon:longint);

begin

if k>=1 then

begin

if b[k,mon]=1 then

begin

print(k-1,mon-v[k]*s[k]);

if k=n then write(k)

else write(k, )

end

else

print(k-1,mon)

end

end;

begin

readln(n,mon); fillchar(b,sizeof(b),0);

for i:=1 to n do

readln(v[i],w[i],s[i]);

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

for i:=1 to n do

for j:=1 to mon do

begin

if j>=v[i]*s[i] then f[i,j]:=max(f[i-1,j],f[i-1,j-v[i]*s[i]]+w[i]*s[i])

else f[i,j]:=f[i-1,j];

if f[i,j]<>f[i-1,j]then b[i,j]:=1;

end;

writeln(f[n,mon]);

print(n,mon);

end.

查看更多回复
提交回复