揹包問題 裝箱問題(洛谷1049)用true模板

2022-08-15 04:18:19 字數 1052 閱讀 8872

題目描述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...