#1 wu_hong_xun@2013-06-29 06:42:00
30157
回复
删除
改前程序
var
m,n,i,t:longint;
w,v:array[1..100] of longint;
f:array[0..100,1..1000] of longint;
begin
read(n,m);
for i:= 1 to m do readln(v[i],w[i]);
for i:= 1 to n do f[0,i]:=0;
for i:= 1 to m do begin
for t:=1 to v[i]-1 do f[i,t]:=f[i-1,t];
for t:=v[i] to n do
if f[i-1,t]>(f[i-1,t-v[i]]+w[i]) then f[i,t]:=f[i-1,t] else f[i,t]:= f[i-1,t-v[i]]+w[i];
end;
writeln(f[m,n]);
end.
#2 wu_hong_xun@2013-06-29 06:43:00
30158
回复
删除
改后程序
var
m,n,i,t:longint;
w,v:array[1..100] of longint;
f:array[0..100,0..1000] of longint;
begin
read(n,m);
for i:= 1 to m do readln(v[i],w[i]);
for i:= 0 to n do f[0,i]:=0;
for i:= 1 to m do begin
for t:=0 to v[i]-1 do f[i,t]:=f[i-1,t];
for t:=v[i] to n do
if f[i-1,t]>(f[i-1,t-v[i]]+w[i]) then f[i,t]:=f[i-1,t] else f[i,t]:= f[i-1,t-v[i]]+w[i];
end;
writeln(f[m,n]);
end.