讨论 / 想知道为什么只得30分的进
wu_hong_xun 2013-07-02 21:10:00
点我顶贴 收藏 删除
只需要把时间为0的加入赋值即可
#1 wu_hong_xun@2013-06-29 06:42:00
回复 删除
改前程序

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
回复 删除
改后程序

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.

#3 huhang1996@2013-07-02 21:10:00
回复 删除
细节
查看更多回复
提交回复