from acwing 3
時間限制:1s
空間限制:64mb
題目描述:
有 n 種物品和乙個容量是 v 的揹包,每種物品都有無限件可用。
第 i 種物品的體積是 vi,價值是 wi。
輸入格式:
第一行兩個整數,n,v,用空格隔開,分別表示物品數量和揹包容積。
接下來有 n 行,每行兩個整數 vi,wi,用空格隔開,分別表示第 i 件物品的體積和價值。
輸出格式:
輸出乙個整數,表示最大價值。
資料範圍:
0 < n,v <= 1000
0 < vi,wi <= 1000
輸入樣例:
4 5
1 22 4
3 44 5
輸出樣例:10
這個題目可以用乙個dp二維陣列完成,但是,如果進行優化的話,可以將陣列開成一維陣列,但是對每件商品的操作,需要從前往後重新整理,因為每件商品是可以無限次數使用的。
每種商品只有一件的情況
一維:
#include
using
namespace std;
int n,v,dp[
1005];
//dp是狀態陣列,表示揹包在某個容量目前能裝下的最多價值
intmain()
cout<;return0;
}
二維:#include
using
namespace std;
int vi[
1005];
int wi[
1005];
int dp[
1005][
1005];
intmain()
} cout<[v];
return0;
}
揹包問題(完全揹包)
1.矩陣鏈乘法 2.投資組合問題 3.完全揹包問題 4.01揹包問題 5.最長公共子串行 乙個揹包,可以放入n種物品,物品j的重量和價值分別為,如果揹包的最大重量限制是b,怎麼樣選擇放入揹包的物品以使得揹包的總價值最大?組合優化問題,設表示裝入揹包的第j個物品的數量,解可以表示為。那麼目標函式和約束...
完全揹包問題
這個是從ppt上弄過來的。完全揹包問題 有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。放入第i種物品的耗費的空間是ci,得到的價值是wi。求解 將哪些物品裝入揹包,可使這些物品的耗費的空間總和不超過揹包容量,且價值總和最大 基本思路 這個問題非常類似於01揹包問題,所不同的是每種物品有無限...
完全揹包問題
設有n種物品,每種物品有乙個重量及乙個價值。但每種物品的數量是無限的,同時有乙個揹包,最大載重量為m,今從n種物品中選取若干件 用乙個物品可以多次選取 使其重量的和小於等於m,而價值的和為最大。輸入有多組資料,對於每組輸入資料第1行 兩個整數,m 揹包容量,m 200 和n 物品數量,n 30 第2...