讨论 / 求讲解啊 ..
ceshui 2013-08-13 07:11:00
点我顶贴 收藏 删除
为什么只有80分啊...

//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.

#1 970478631@2013-08-13 07:11:00
回复 删除
回复 楼主ceshui 的帖子

看不出来。咱俩的程序基本一样样的。。

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.

查看更多回复
提交回复