有乙個箱子容量為v(正整數,0<=v<=20000),同時有n個物品(0<n<=30,每個物品有乙個體積(正整數)。
要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。
輸入格式:
乙個整數,表示箱子容量
乙個整數,表示有n個物品
接下來n行,分別表示這n 個物品的各自體積
輸出格式:
乙個整數,表示箱子剩餘空間。
輸入樣例#1:
2468輸出樣例#1:31279
7
0noip2001普及組 第4題
動態規劃
01揹包的變式題。
只需在01揹包思想的基礎上,把物品的體積同時看做物品的價值,最後用箱子的容積減去最大體積,即可解決此問題。
我們可以得到狀態轉移方程:f[j]:=max;
初始:f[j]=0;
目標:v-f[v]。
下面附上**。
var
v,n,i,j:longint;
a:array[1..30] of longint;
f:array[0..20000] of longint;
function max(x,y:longint):longint;
begin
if x>y then exit(x)
else exit(y);
end;
begin
readln(v);
readln(n);
for i:=1 to n do
readln(a[i]);
for i:=1 to n do
for j:=v downto a[i] do
f[j]:=max(f[j],f[j-a[i]]+a[i]);
writeln(v-f[v]);
end.
洛谷P1049裝箱問題題解 zhengjun
題目描述 有乙個箱子容量為v vv 正整數,0 v 20000 0 le v le 20000 0 v 20 000 同時有n nn個物品 0 300 030 每個物品有乙個體積 正整數 要求n nn個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。輸入格式 1 11個整數,表示箱子容量 1 1...
洛谷 P1049 裝箱問題
題目描述 有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0 n 30,每個物品有乙個體積 正整數 要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。輸入輸出格式 輸入格式 乙個整數,表示箱子容量 乙個整數,表示有n個物品 接下來n行,分別表示這n 個物品的各自體積 輸出格...
洛谷P1049 裝箱問題
有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。輸入格式 1個整數,表示箱子容量 1個整數,表示有n個物品 接下來n行,分別表示這n個物品的各自體積 輸出格式 1個整數,表示箱子剩餘空間。輸入樣例 1 複製 2468 31...