源程序如下
Var
A,B:Array[1..1000] Of LongInt;
F:Array[0..1000,0..1000] Of LongInt;
k,n,m,i,j:LongInt;
Begin
Read(n,m);
For i:=0 to n Do
F[0,i]:=0;
For i:=1 to m Do
Read(A,B);
For i:=1 to m Do
For j:=0 to n Do
Begin
F[i,j]:=F[i-1,j];
IF (j>=A) And (F[i-1,j]<F[i-1,j-A]+B) Then
F[i,j]:=F[i-1,j-A]+B; {取或不取,动态转移方程}
End;
Write(F[m,n]);
End.