程序如下
```cpp
var n,m,i,j,x,y:longint;
f:array[0..50000] of longint;
begin
read(n,m);
for i:=1 to m do
begin
read(x,y);
for j:=n downto x do
if f[j]<f[j-x]+y then
f[j]:=f[j-x]+y;
end;
writeln(f[n]);
end.
```
by zztzuishuai @ 2016-05-20 18:31:05
我的程序是这样的:
```cpp
var m,n,i,j:longint;f,a,b:array[-100..100000] of longint;
begin
read(m,n);
for i:=1 to n do
read(a[i],b[i]);
for i:=1 to n do
for j:=m downto a[i] do
if f[j]<f[j-a[i]]+b[i] then f[j]:=f[j-a[i]]+b[i];
write(f[m]);
end.
```
by ghruik @ 2016-08-24 10:48:42
我知道你的程序错在哪里了,’for k:=ti downto v[i] do ‘v【i】代表价值,应改为t【i】这代表的是重量,你却变成了价值,其他好像都对的
by ghruik @ 2016-08-24 10:51:42
## 这是我的程序
```cpp
var
n,m,i,j,v,p:longint;
f:array[1..30001]of longint;
begin
readln(n,m);
for i:=1 to m do begin
readln(v,p);
for j:=n downto v do
if f[j]<f[j-v]+p then
f[j]:=f[j-v]+p
end;
writeln(f[n]);
```
readln
end.
by 石浩瀚 @ 2016-11-19 10:54:59