讨论 / 帮帮忙大牛
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.

#1 ssxyh@2008-02-17 23:13:00
回复 删除
貌似你的最外层循环与第二层循环反了.
#2 3144046cjc@2008-02-17 23:30:00
回复 删除
好心的牛啊,虽然改过之后对了,但是我觉得原来的循环应该也可以得到正确的解啊,问题出在那里呢?

牛人留步,解释一下原来的循环为什么是错的。感激不尽~~~~~~~

查看更多回复
提交回复