description
有乙個箱子容量為v(正整數,0<=v<=20000),同時有n個物品(0<n<=30=,每個物品有乙個體積(正整數)。
要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。
input
output
sample input
24 乙個整數,表示箱子容量
6 乙個整數,表示有n個物品
8 接下來n行,分別表示這n 個物品的各自體積
3
12
7
9
7
sample output
0 乙個整數,表示箱子剩餘空間。
解題思路1:f[i,j]表示前i件物品放入乙個容量為j的揹包可以獲得的最大價值,狀態轉移方程為:f[i,j]=max
(1<=i<=n,v>=j>=0)
v-f[v]即為所求。
時間複雜度:
o(nv)
程式2:
varn,v,i,j:longint;
f,w:array[0..20000]of longint;
function max(a,b:longint):longint;
begin
if a>b then exit(a) else exit(b);
end;
begin
readln(v);
readln(n);
for i:=1 to n do
readln(w[i]);
for i:=1 to n do
for j:=v downto 0 do
if j>=w[i] then f[j]:=max(f[j],f[j-w[i]]+w[i]);
writeln(v-f[v]);
end.
版權屬於: chris
2023年分割槽聯賽普級組之四 裝
description 有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0 n 30 每個物品有乙個體積 正整數 要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。input 乙個整數,表示箱子容量。乙個整數,表示有n個物品。接下來n行,分別表示這n 個物品的各自體積 ou...
2023年分割槽聯賽普級組之四 裝箱問
description 有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0 n 30 每個物品有乙個體積 正整數 要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。input output sample input 24 乙個整數,表示箱子容量 6 乙個整數,表示有n個物品...
2023年分割槽聯賽普級組之四 裝箱問題
2001年分割槽聯賽普級組之四 裝箱問題 time limit 1000ms memory limit 65536k total submit 396 accepted 217 description 有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0 n 30 每個物品有乙個體積 ...