PASCAL01背包问题

2025-02-24 15:22:15
推荐回答(1个)
回答1:

背包问题其实可以一维数组解决
if j>=w[i] then f[i,j]:=max(f[i-1,j],f[i-1,j-w[i]]+v[i]) 改为
if j>=w[i] then f[i,j]:=max(f[i-1,j],f[i-1,j-w[i]]+v[i]) else f[i,j]:=f[i-1,j];
for j:=time downto 1 do 改为
for i:=1 to time do
数据
100 3
50 20
60 38
50 39
修改前输出:39
修改后输出:59
主要因为一旦装不下了后面就无法延续上面的数据,还有就是循环反了