題目:
小v負責一次活動禮品採購,每一款禮品的受歡迎程度(熱度值)各不相同,現給出總金額以及各個禮品的單價和熱度值,且每個禮品只購買乙個,如何購買可以使得所有禮品的總熱度值最高。
輸入:第一行是乙個正整數,表示總金額(不大於1000)
第二行是乙個長度為n的正整數陣列,表示禮品單價(n不大於100)
第三行是乙個長度為n的正整數陣列,表示對應禮品的熱度值
輸出: 乙個正整數,表示可以獲得的最高總熱度值
樣例輸入:
200 600 100 180 300 450
6 10 3 4 5 8
樣例輸出:21
常規的dp,定義dp[i][j]表示當揹包大小為 j 時,前 i 件物品的最佳組合對應的最大價值。
二維dp:
#include
#include
#include
using
namespace std;
//定義dp[i][j]表示當揹包大小為 j 時,前 i 件物品的最佳組合對應的最大價值。
intmain()
;int hotness[7]
=;vectorint>>dp(
6+1, vector<
int>
(1000+1
,0))
;//初始化
for(
int i =
1; i <=
6; i++
)for
(int j =
0; j <=
1000
; j++
)else
dp[i]
[j]= dp[i -1]
[j];
} cout << dp[6]
[1000
]<< endl;
system
("pause");
return0;
}
一維dp:
#include
#include
#include
using
namespace std;
//定義dp[j]表示當揹包大小為j時最大價值。
intmain()
;int hotness[7]
=;vector<
int>dp(
1000+1
,0);
//初始化
//dp[0]=0已經被初始化了
for(
int i =
0; i <=
6; i++
)for
(int j =
1000
; j - prices[i]
>=
0; j--
) cout << dp[
1000
]<< endl;
system
("pause");
return0;
}
01揹包入門題 簡單到死
題意 最裸的01揹包,給你揹包總量和物品數,以及物品的價值和體積,讓你求揹包裝滿後的最大價值 include using namespace std const int n 1e3 10 int w n v n dp n int main cout 0 題意 給你n個菜的 沒種菜只能買一次,再給你乙...
簡單0 1揹包
第一次部落格求不噴不噴不噴!有乙個容量為v的揹包,要裝進n個物品,第i個物品的費用為ci,價值為wi,要怎樣選擇才可以使花費不超過揹包容量的同時包裡的總價值最大?每個物品只能放一次 當時剛接觸c 的我剛拿到題目就蒙逼了 如果乙個乙個列舉的話有很多種組合,想想心都累。所以就要利用動態規劃思想。什麼是動...
簡單01揹包
time limit 1000ms memory limit 65536k 有疑問?點這裡 這是個什麼問題呢?dp,貪心,資料結構,圖論,數論還是計算幾何?管他呢,反正胖巨巨都會,雖然胖巨巨走得早。現在有n個數xi,現在你要把這些數分成兩組a,b,使得abs sum a sum b 盡可能的小,並且...