動態規劃之行李打包問題

2021-07-03 14:52:16 字數 659 閱讀 9199

今天開始再度研究演算法問題,就從動態規劃開始吧。

行李打包問題就是在固定的容積內放入價值不同的產品,能夠使包裝滿後價值最大,接近生活點就是吃自助,價錢一定的前提下使自己受益最大。

//解決行李打包問題的動態規劃演算法

int n,capacity;

int volume[100],need[100];

int cache[1001][1001]

//行李箱剩餘空間為capicity時,將返回放入item以後物品所能得到的必要程度最大值

int pack(int capacity,int item)

int &ret =cache[capacity][item];

if (ret != -1)

//不放當前物品到包裡

ret=pack(capacity,item+1);

if(capacity >=volume[item])

return ret;

}//獲取放入包中的東西內容

void reconstruct(int capacity,int item, vector&picked)

if(pack(capacity,item) == pack(capacity,item+1))

else

}

動態規劃問題

思想 如果乙個問題是由交疊的子問題所構成,那麼我們就可以用動態規劃技術來解決它。一般來說,這樣的子問題出現在對給定問題求解的遞迴關係中。這個遞推關係包含了相 同問題的更小子問題的解。動態規劃法建議,與其對交疊子問題一次又一次的求解,不如把每個較小子問題只求解一次並把結果記錄在表中。例題 0 1揹包問...

動態規劃問題

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 ctest有n個蘋果,要將它放入容量為v的揹包。給出第i個蘋果的大小和價錢,求出能放入揹包的蘋果的總價錢最大值。輸入 有多組測試資料,每組測試資料第一行為2個正整數,分別代表蘋果的個數n和揹包的容量v,n v同時為0時結束測試,...

動態規劃問題

以下內容基於個人理解。一 什麼是動態規劃 動態規劃 dp 演算法,指的是 乙個問題的解決是依賴於若干個和該問題相似,但比該問題的問題規模更小的問題時,所採用的一種演算法。動態規劃是自底向上的思考問題的方法,通常要從最底層的問題開始考慮。而這類問題的特點是 解決所有本層次問題後,就可以解決上一層的問題...