0 1揹包,完全揹包,多重揹包

2021-09-12 06:28:53 字數 2339 閱讀 7070

小p尋寶記——粗心的**

problem description

這對好**他們在經歷無數的艱難險阻後,終於找到了寶藏。無奈的是這一對好**竟然是一樣的粗心,又忘記了帶乙個大一點的包包,可惜啊、、選擇又出現了啊、、

已知包的體積是v,每種寶貝只有乙個,寶貝的體積是pi,價值是wi。求出這對粗心的**可以最多帶走價值多少的寶藏。

input

輸入資料有多組。

每組第一行有兩個正整數n(n <= 10000)和v(v <= 10000)分別表示n種寶貝和包的體積。

接下來n行,每行有兩個正整數vi, wi。

分別表示每種寶藏的體積vi (vi<=1000),價值wi(wi<=1000)。

output

這對**所能帶走的最多的寶藏。

sample input

5 10

1 52 4

3 34 2

5 1sample output

140-1揹包問題

#include #include #include int max(int a,int b)

int main()

for(i=1; i<=n; i++)}}

printf("%d\n",dp[v]);

}return 0;

}

完全揹包問題

小p尋寶記——好**一起走

problem description

話說,上次小p到伊利哇呀國旅行得到了一批寶藏。他是相當開心啊,回來就告訴了他的好**小鑫,於是他們又結伴去伊利哇呀國尋寶。
這次小p的尋寶之路可沒有那麼的輕鬆,他們走到了乙個森林,小鑫一不小心被觸發了機關,被困在了乙個大籠子裡面,籠子旁邊上有一道題目和乙個密碼鎖,上面說只要解出此題輸入密碼即可救出被困人。小鑫不是很聰明,所以他做不出來,他知道小p很笨,更解不出來。所以他就讓小p獨自回去,不用管他。但是小p重情重義不會拋棄他離去。他說:「不,好**一起走!」。於是就感動了上帝,上帝特派你來替他們解決問題。聰明的你要加油了啊!

題目描述:給你n種物品和乙個體積為v的包包。每種物品有無數種,體積是vi價值是wi。求出包包v所能裝的最大價值的東西。

input

多組輸入。第一行有兩個正整數n(0輸出最多可以得到的價值。輸出結果救出小鑫。

sample input

5 20

1 2 3 4 5

2 6 3 5 4

sample output

25

#include #include #include int max(int a,int b)

int main()

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

for(i=1; i<=n; i++)}}

printf("%d\n",dp[v]);

}return 0;

}

b - 最少硬幣問題

description

設有n種不同面值的硬幣,各硬幣的面值存於陣列t[1:n]中。現要用這些面值的硬幣來找錢。可以使用的各種面值的硬幣個數存於陣列coins[1:n]中。

對任意錢數0≤m≤20001,設計乙個用最少硬幣找錢m的方法。

對於給定的1≤n≤10,硬幣面值陣列t和可以使用的各種面值的硬幣個數陣列coins,以及錢數m,0≤m≤20001,計算找錢m的最少硬幣數。

input

輸入資料第一行中只有1個整數給出n的值,第2行起每行2個數,分別是t[j]和coins[j]。最後1行是要找的錢數m。

output

輸出資料只有乙個整數,表示計算出的最少硬幣數。問題無解時輸出-1。

sample

input

31 3

2 35 3

18output

5大概是多重揹包(?)

#include

#include

#include

#include

#define inf 0x3f3f3f3f

using

namespace std;

intmain()

cin>>x;

memset

(dp,inf,

sizeof

(dp));

dp[0]

=0;//有件數和0-1揹包的組合

for(i=

0;i)//每個物品}}

}if(dp[x]

cout<

"-1"

}

揹包 01揹包,完全揹包,多重揹包

哈哈 01揹包 f i v max 完全揹包 f i v max 多重揹包 f i v max include include include include include define maxn 1000 using namespace std int n,cap int w maxn 重量 花...

01揹包 完全揹包 多重揹包

01揹包 zeroonepack 有n件物品和乙個容量為v的揹包,每種物品均只有一件。第i件物品的費用是c i 價值是w i 求解將哪些物品裝入揹包可使價值總和最大。include include includeusing namespace std const int n 1000 10 int ...

01揹包 完全揹包 多重揹包

01揹包 zeroonepack 有n件物品和乙個容量為v的揹包。每種物品均只有一件 第i件物品的費用是c i 價值是w i 求解將哪些物品裝入揹包可使價值總和最大。完全揹包 completepack 有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。第i種物品的費用是c i 價值是w i 求...