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个点
奇怪