讨论 / 找错误
purplef 2010-09-30 06:51:00
点我顶贴 收藏 删除
program jm;

var

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

f:array[0..25,0..10000]of longint;

n,m:longint;

procedure readdata;

var i:longint;

begin

readln(n,m);

for i:=1 to m do begin

readln(v[i],w[i]);w[i]:=w[i]*v[i];

end;

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

end;

procedure dp;

var

i,j:longint;

x:longint;

begin

for i:=1 to m do

for j:=1 to n do begin

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

if j>=v[i] then begin

x:=f[i-1,j-v[i]]+w[i];

if x>f[i,j] then f[i,j]:=x;

end;

end;

end;

begin

readdata;

dp;

write(f[m,n]);

end.

错在哪儿?明明是很简单的01背包,状态转移方程没错啊,还对了5个点

奇怪

查看更多回复
提交回复