oj2335 0 1揹包問題

2021-08-01 07:07:47 字數 1172 閱讀 4675

問題描述:0-1揹包問題

試設計乙個用回溯法搜尋子集空間樹的函式。該函式的引數包括結點可行性判定函式和上界函式等必要的函式,並將此函式用於解0-1揹包問題。

0-1 揹包問題描述如下:給定n 種物品和乙個揹包。物品i 的重量是wi ,其價值為vi ,揹包的容量為c。應如何選擇裝入揹包的物品,使得裝

入揹包中物品的總價值最大? 在選擇裝入揹包的物品時,對每種物品i只有2 種選擇,即裝入揹包或不裝入揹包。不能將物品i 裝入揹包多次,

也不能只裝入部分的物品i。

輸入;第一行有2個正整數n和c。n是物品數,c是揹包的容量。接下來的1 行中有n個正整數,表示物品的價值。第3 行中有n個正整數,表示物品的重量。

輸出:將計算出的裝入揹包物品的最大價值和最優裝入方案輸出。第一行輸出為:optimal value is

解題思想:使用貪心思想,不斷尋找價效比最高的物品將其裝進包裡,當物品中的最小質量大於包的剩餘質量時結束迴圈;

**:

/*

問題描述:0-1揹包問題

試設計乙個用回溯法搜尋子集空間樹的函式。該函式的引數包括結點可行性判定函式和上界函式等必要的函式,並將此函式用於解0-1揹包問題。

0-1 揹包問題描述如下:給定n 種物品和乙個揹包。物品i 的重量是wi ,其價值為vi ,揹包的容量為c。應如何選擇裝入揹包的物品,使得裝

入揹包中物品的總價值最大? 在選擇裝入揹包的物品時,對每種物品i只有2 種選擇,即裝入揹包或不裝入揹包。不能將物品i 裝入揹包多次,

也不能只裝入部分的物品i。

輸入;第一行有2個正整數n和c。n是物品數,c是揹包的容量。接下來的1 行中有n個正整數,表示物品的價值。第3 行中有n個正整數,表示物品的重量。

輸出:將計算出的裝入揹包物品的最大價值和最優裝入方案輸出。第一行輸出為:optimal value is

*/#include #include int findmax(float value,int state,int n)//查詢未拿進包中的物品中價效比最高的物品

while(left_weight>minweight)//使用貪心思想,不斷尋找價效比最高的物品將其裝進包裡,當物品中的最小質量大於包的剩餘質量時結束迴圈。

for(i=0;i

知識點總結:貪心思想

學習心得:貪心演算法有些情況不能解決一些問題,最標準解法為動態規劃。

ytu 2335 0 1揹包問題

試設計乙個用回溯法搜尋子集空間樹的函式。該函式的引數包括結點可行性判定函式和上界函式等必要的函式,並將此函式用於解0 1揹包問題。0 1 揹包問題描述如下 給定n 種物品和乙個揹包。物品i 的重量是wi 其價值為vi,揹包的容量為c。應如何選擇裝入揹包的物品,使得裝入揹包中物品的總價值最大?在選擇裝...

南陽OJ 揹包問題

揹包問題 時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描寫敘述 如今有非常多物品 它們是能夠切割的 我們知道它們每乙個物品的單位重量的價值v和 重量w 1 v,w 10 假設給你乙個揹包它能容納的重量為m 10 m 20 你所要做的就是把物品裝到揹包裡,使揹包裡的物品的價值總和...

南陽oj106 揹包問題

描述 現在有很多物品 它們是可以分割的 我們知道它們每個物品的單位重量的價值v和重量w 1 v,w 10 如果給你乙個揹包它能容納的重量為m 10 m 20 你所要做的就是把物品裝到揹包裡,使揹包裡的物品的價值總和最大。輸入 第一行輸入乙個正整數n 1 n 5 表示有n組測試資料 隨後有n測試資料,...