noj 1004 0 1揹包問題 dfs

2021-09-27 02:13:09 字數 901 閱讀 6227

時限:1000ms 記憶體限制:10000k 總時限:3000ms

描述:

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

輸入:

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

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

輸出:

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

輸入樣例:

1 211

2 32 2

3 40 0

輸出樣例:

1

4

#include using namespace std;

struct mine

;mine data[20];

int max;

int c, n;

void dfs(int k, int sv, int sw)

return;

} //選(左子樹)

dfs(k+1, sv + data[k].p, sw + data[k].w);

//不選(右子樹)

dfs(k+1, sv, sw);

}int main(int argc, char const *ar**)

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

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

max = 0;

dfs(0,0,0);

cout<} return 0;

}

NOJ 1004 0 1揹包問題

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

NOJ 1577 0 1揹包問題

原部落格 0 1揹包問題 描述 乙個揹包容量為c 現有n件物品,求能裝入揹包的最大重量是多少?輸入 先輸入兩個正整數n c 0輸出 輸出能裝入揹包的最大重量。輸入樣例 5 5023 18 13 35 24輸出樣例 48方法一 0 1揹包的裸題,那就可以直接寫乙個01揹包的動態轉移方程 dp j ma...

揹包問題 01揹包問題

n個物品,總體積是v,每個物品的體積的vi,每個物品的最大價值是wi,在不超過v的體積下求最大價值 eg揹包容積為 5 物品數量為 4 物品的體積分別為 物品的價值分別為 思路定義乙個二位陣列int f new int n 1 v 1 f i j 就表示在1 i個物品中選取體積小於v的情況的最大價值...