題目描述description
有乙個箱子容量為v(正整數,0<=v<=20000),同時有n個物品(0<n<=30,每個物品有乙個體積(正整數)。
要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。
輸入輸出格式input/output
輸入格式:
乙個整數,表示箱子容量
乙個整數,表示有n個物品
接下來n行,分別表示這n 個物品的各自體積
輸出格式:
乙個整數,表示箱子剩餘空間。
輸入輸出樣例sample input/output
樣例測試點#1
輸入樣例:246
83127
97輸出樣例:
0
var v,n,i,j,max:longint;
a:array[1..30] of longint;
f:array[1..20000] of boolean; //表示是否可以到達
begin
readln(v);
readln(n);
for i:=1 to n do readln(a[i]);
f[0]:=true;
for i:=1 to n do
for j:=v-a[i] downto 0 do //01揹包倒過來
if f[j] then f[j+a[i]]:=true; //如果f[j]可以到,那麼f[j+a[i]]也可以到
for i:=v downto 1 do //倒過來找最大的可以到達的包
if f[i] then
begin
max:=i;
break;
end;
writeln(v-max);
end.
洛谷 P1049 裝箱問題 (搜尋 揹包
還是選與不選的問題,資料範圍這麼小,dfs一下就可以了 揹包思想 題目要求出最大的裝載量,每個物品的重量為它的價值,所以這就是乙個裸的01揹包了啦啦啦啦 include using namespace std const int maxn 2e5 10 int v,n int w maxn int ...
揹包問題 01揹包 P1049 裝箱問題
p1049 裝箱問題 f i j 把前面 i 件物品放進容量為 j 的揹包當中所獲得的最大價值 現在有 n 件物品,揹包容積為 v 那麼列出狀態轉移方程 f i j max f i 1 j f i 1 j v i w i j v i f i 1 j j v i 0 i 0 or j 0 全域性陣列建...
P1049 裝箱問題(揹包)
有乙個箱子容量為vv 正整數,0 le v le 200000 v 20000 同時有nn個物品 00要求nn個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。11個整數,表示箱子容量 11個整數,表示有nn個物品 接下來nn行,分別表示這nn個物品的各自體積 11個整數,表示箱子剩餘空間。in...