01揹包問題 動態規劃求解

2021-09-12 07:19:40 字數 748 閱讀 7914

時間限制: 1 sec  記憶體限制: 128 mb

提交: 48  解決: 17

給定n種物品和乙個揹包,物品i的重量是wi,其價值為vi,問如何選擇裝入揹包的物品,使得裝入揹包的物品的總價值最大?

在選擇裝入揹包的物品時,對每種物品i只能有兩種選擇,裝入或者不裝入,不能裝入多次,也不能部分裝入。

第一行輸入物品的個數n。

第二行輸入物品的重量序列w。(中間有空格)

第三行輸入物品的價值序列v。(中間有空格)

第四行輸入揹包容量c。

第一行輸出裝入揹包的物品。(用0和1表示,中間無空格)

第二行輸出最大價值。

3

3 4 5

4 5 6

10

011

11

#include #include using namespace std;

int n, c;

int w[101], v[101];

int choose[101];

int value[101][101];

void max()

}}void find(int x, int y)

else if ((y - w[x]) >= 0 && value[x][y] == (value[x - 1][y - w[x]] + v[x]))

}}int main()

0 1揹包問題,動態規劃求解

1.什麼是0 1揹包問題?有n個物品,它們有各自的體積和價值,現有給定容量的揹包,如何讓揹包裡裝入的物品具有最大的價值總和?舉例int v 每個物品對應的價值 int w 每個物品對應的重量 int bag 10 揹包最大承重10 0 1揹包問題 public static void main st...

用動態規劃求解0 1揹包問題

0 1揹包問題描述 有n件物品和乙個重量為m的揹包。每種物品均只有一件 第i件物品的重量是w i 價值是p i 求解將哪些物品裝入揹包可使價值總和最大。動態規劃的基本思想 將乙個問題分解為子問題遞迴求解,且將中間結果儲存以避免重複計算。通常用來求最優解,且最優解的區域性也是最優的。求解過程產生多個決...

用動態規劃求解 0 1揹包問題

今天下午又把 0 1 揹包問題看了下,發現之前的寫法雖然答案正確,但是和動態規劃的思想相關度不大。不是想當然地從乙個二維陣列的 0 0 元素開始求解。直接放上 吧,因為已經寫得很詳細了。其中 weight 是儲存了每件物品重量的 vector,value 是儲存了每件物品價值的 vector,c 表...