3144046cjc 2008-02-17 23:30:00
点我顶贴
收藏
删除
请教一下,为什么像这样的程序只有80分啊?到底是哪里错了?我已经没想法了,什么乱七八糟的数据,居然有价格为零的物品。好心的牛啊,赐教!
var
w:array[0..10000] of longint;
a,v:array[1..5000] of longint;
m,n,i,j:longint;
function max(a,b:longint):longint;
begin if a>b then exit(a) else exit(b);end;
begin
readln(n,m);
for i:=1 to m do w[i]:=-2147483648;
for i:=1 to n do
readln(a[i],v[i]);
for i:=0 to m do
for j:=1 to n do
if i-a[j]>=0 then begin w[i]:=max(w[i],w[i-a[j]]+v[j]);end;
writeln(w[m]);
end.
#2 3144046cjc@2008-02-17 23:30:00
849
回复
删除
好心的牛啊,虽然改过之后对了,但是我觉得原来的循环应该也可以得到正确的解啊,问题出在那里呢?
牛人留步,解释一下原来的循环为什么是错的。感激不尽~~~~~~~