8785 裝箱問題 動態規劃 01揹包

2021-10-09 05:02:30 字數 676 閱讀 9244

描述

有乙個箱子容量為v(正整數,0<=v<=20000),同時有n個物品(0< n<=30),每個物品有乙個體積(正整數)。

要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。

輸入第一行是乙個整數v,表示箱子容量。

第二行是乙個整數n,表示物品數。

接下來n行,每行乙個正整數(不超過10000),分別表示這n個物品的各自體積。

輸出乙個整數,表示箱子剩餘空間。

樣例輸入

2468

31279

7

樣例輸出

0
思路:屬於01揹包的變形吧,相當於物品的價值和價值相同,然後更新的時候注意更新的值不能大於揹包容量,而且最後不能直接輸出揹包容量v-f[v-1],因為加上最後乙個物品可能會超出範圍所以沒有更新,所以最後要遍歷找到最大值,再減去後輸出。

#include using namespace std;

int w[35];

int f[20005];

int main()

for(int i=0;i=w[i];j--)

} int maxn=0;

for(int i=0;i<=v;i++)

cout << v-maxn

}

0 1揹包問題(動態規劃)

一 問題描述 有n件物品和乙個容量為v的揹包。第i件物品的費用是c i 價值是w i 求解將哪些物品裝入揹包可使價值總和最大。所謂01揹包,表示每乙個物品只有乙個,要麼裝入,要麼不裝入。二 解決方案 考慮使用動態規劃求解,定義乙個遞迴式 opt i v 表示前i個物品,在揹包容量大小為v的情況下,最...

動態規劃0 1揹包問題

問題描述 給定n種物品和一揹包。物品i的重量是wi,其價值為vi,揹包的容量為c。問應如何選擇裝入揹包的物品,使得裝 入揹包中物品的總價值最大?對於一種物品,要麼裝入揹包,要麼不裝。所以對於一種物品的裝入狀態可以取0和1.我們設物品i的裝入狀態為xi,xi 0,1 此問題稱為0 11揹包問題。過程分...

動態規劃 0 1揹包問題

給定乙個載重量為m,n個物品,其重量為w i,價值為v i,1 i n,要求 把物品裝入揹包,並使包內物品價值最大 在0 1揹包問題中,物體或者被裝入揹包,或者不被裝入揹包,只有兩種選擇。迴圈變數i,j意義 前i個物品能夠裝入載重量為j的揹包中 n 1 m 1 陣列value意義 value i j...