讨论 / 初始化方法中 理解与现实 不符啊!!求解释我理解那里错了
20120973 2013-11-26 21:31:10
点我顶贴 收藏 删除
var m,n,i,j,k,p:longint;

f,a,b:array[0..320]of longint;

v,w:array[0..100,0..100]of longint;

begin

read(m,n);

fillchar(v,sizeof(v),0);

fillchar(w,sizeof(w),0);

for i:=1 to n do

begin

read(a[i],b[i],p);(临时数组)

a[i]:=a[i] div 10;

if p=0 then

begin

inc(v[i,0]);

v[i,v[i,0]]:=a[i];

w[i,v[i,0]]:=a[i]*b[i];

end;

if p<>0 then

begin

inc(v[p,0]);

v[p,v[p,0]]:=a[p]+a[i];

w[p,v[p,0]]:=a[p]*b[p]+a[i]*b[i];

end;

【【【【 if v[p,0]=3 then

begin

inc(v[p,0]);

v[p,v[p,0]]:=v[p,2]+a[i];

w[p,v[p,0]]:=w[p,2]+a[i]*b[i];

end;

end;】】】(就是这一块)

m:=m div 10;

for i:=1 to n do

for k:=1 to v[i,0] do

for j:= m downto 0 do

if j>=v[i,k] then

if f[j]<f[j-v[i,k]]+w[i,k] then

f[j]:=f[j-v[i,k]]+w[i,k];

write(f[m]*10);

end.

第一种的【】块表示:

当主件有第二个附件,在第二个附件与主件合并之后。

将第二个附件和‘已经打包在一起的第一个附件与主件’打包在一起;

这种方法 为什么过不了?那里有问题?

#1 zhangzj2014@2014-09-20 00:13:15
回复 删除
应该在查找主件时同时枚举附件,因为附件不能单独购买。
查看更多回复
提交回复