200219題(簡單的01揹包問題vivo)

2021-10-02 19:52:04 字數 1512 閱讀 3705

題目:

小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 盡可能的小,並且...