//n,m,r,t
//f[i,rmb,rp]:=max{f[i-1,rmb,rp],f[i-1,rmb-m[i],rp-r[i]]+1}
var n,i,j,k,rmb,rp:integer;
m,r,t:array[0..100] of integer;
f,t1:array[0..100,0..100,0..100] of longint;
begin
fillchar(f,sizeof(f),0);
readln(n);
for i:=1 to n do
readln(m[i],r[i],t[i]);
readln(rmb,rp);
for i:=1 to n do
for j:=m[i] to rmb do
for k:=r[i] to rp do
begin
f[i,j,k]:=f[i-1,j,k];
t1[i,j,k]:=t1[i-1,j,k];
if f[i,j,k]<f[i-1,j-m[i],k-r[i]]+1 then begin
f[i,j,k]:=f[i-1,j-m[i],k-r[i]]+1;t1[i,j,k]:=t1[i-1,j-m[i],k-r[i]]+t[i];end;
if (f[i,j,k]=f[i-1,j-m[i],k-r[i]]+1)and(t1[i,j,k]>t1[i-1,j-m[i],k-r[i]]+t[i]) then t1[i,j,k]:=t1[i-1,j-m[i],k-r[i]]+t[i];
end;
//if f[i-1,j,k]=f[i-1,j-m[i],k-r[i]]+1 then begin
writeln(t1[n,rmb,rp]);
end.
看不出来。咱俩的程序基本一样样的。。
program GF;
type
re=record
g,s:longint;
end;
var i,j,k,l,n,money,rp:longint;
m,r,t:array[0..100] of longint;
a:array[0..100,0..100,0..100] of re;
begin
readln(n);
for i:= 1 to n do readln(m[i],r[i],t[i]);
readln(money,rp);
for i:= 1 to n do
begin
for j:= 1 to money do
begin
for k:= 1 to rp do
begin
a[i,j,k].g:=a[i-1,j,k].g;
a[i,j,k].s:=a[i-1,j,k].s;
if (j>=m[i]) and (k>=r[i]) and (a[i,j,k].g<a[i-1,j-m[i],k-r[i]].g+1) then
begin
a[i,j,k].g:=a[i-1,j-m[i],k-r[i]].g+1;
a[i,j,k].s:=a[i-1,j-m[i],k-r[i]].s+t[i];
end;
if (j>=m[i]) and (k>=r[i]) and (a[i,j,k].g=a[i-1,j-m[i],k-r[i]].g+1) then
begin
if a[i,j,k].s>a[i-1,j-m[i],k-r[i]].s+t[i] then a[i,j,k].s:=a[i-1,j-m[i],k-r[i]].s+t[i];
end;
end;
end;
end;
writeln(a[n,money,rp].s);
end.