描述
有乙個箱子容量為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...