NOJ 1004) 回溯演算法 01揹包問題

2021-08-09 17:27:15 字數 759 閱讀 3289

問題描述

需對容量為c 的揹包進行裝載。從n 個物品中選取裝入揹包的物品,每件物品i 的重量為wi ,價值為pi 。對於可行的揹包裝載,揹包中物品的總重量不能超過揹包的容量,最佳裝載是指所裝入的物品價值最高。

輸入多個測例,每個測例的輸入佔三行。第一行兩個整數:n(n<=10)和c,第二行n個整數分別是w1到wn,第三行n個整數分別是p1到pn。

n 和 c 都等於零標誌輸入結束。

輸出每個測例的輸出佔一行,輸出乙個整數,即最佳裝載的總價值。

輸入樣例

1 2

1 1

2 3

2 2

3 4

0 0輸出樣例

輸出的前幾行: 1 4

**如下

#include 

int cur_weight, cur_value;

int max_value;

int c, n, time;//time記錄求最大解的次數

int w[100], v[100], value[100];

void

try ( int k )

else

}}int main()

try ( 1 );

value[time++] = max_value;}}

for ( i = 1; i < time; i++ )

printf ( "%d\n", value[i] );

return

0;}

演算法實驗二 回溯法 0 1揹包問題

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述需對容量為c 的揹包進行裝載。從n 個物品中選取裝入揹包的物品,每件物品i 的重量為wi 價值為pi 對於可行的揹包裝載,揹包中物品的總重量不能超過揹包的容量,最佳裝載是指所裝入的物品價值最高。輸入多個測例,每個測例的輸入佔三行...

演算法分析 實驗 4 回溯法求解0 1揹包等問題

目錄實驗總結 本實驗要求基於演算法設計與分析的一般過程 即待求解問題的描述 演算法設計 演算法描述 演算法正確性證明 演算法分析 演算法實現與測試 通過回溯法的在實際問題求解實踐中,加深理解其基本原理和思想以及求解步驟。求解的問題為0 1揹包。作為挑戰 可以考慮回溯法在其他問題 如最大團問題 旅行商...

回溯演算法 0 1揹包問題

給定乙個物品集合s 1,2,3,n 物品i的重量是wi,其價值是vi,揹包的容量為w,即最大載重量不超過w。在限定的總重量w內,我們如何選擇物品,才能使得物品的總價值最大。0 1揹包問題回溯演算法的資料結構 define num 100 int c 揹包的容量 int n 物品的數量 int cw ...