linshutan 2009-10-28 20:53:00
点我顶贴
收藏
删除
qsort(1,n);
for i:=1 to n do
begin
for k:=t downto 0 do
for j:=t downto 0 do
begin
if j>=a[i].final then f[j,k]:=max(f[j,k],f[a[i].start-1,k]+a[i].w);
if k>=a[i].final then f[j,k]:=max(f[j,a[i].start-1]+a[i].w,f[j,k]);
end;
end;
#1 没13@2009-10-28 20:53:00
13610
回复
删除
加句解释
f[j,k]表示 第一个工作到第j时刻,第二个工作到第k时刻的最大收益 故
f[j,k]:=max { f[j,k] {{不放第i个药品}}
f[i.strat-1,k]+i.w {{第i个加入到第一个中
f[j,i.strat-1]+i.w {{第i个加入到
第二个中