LQ訓練營 C 學習筆記 揹包問題

2021-10-04 14:44:00 字數 2624 閱讀 2134

2、多重揹包問題

3、完全揹包問題

當前有n件物品和乙個容積為v的揹包。已知第i件物品的體積是ci,價值是wi。由於每種物品有且僅有一件,因此只能選擇放或不放,我們稱之為01揹包問題。

現在你需要選出若干件物品,在它們的重量之和不超過v的條件下,使得價值總和盡可能大。

對於01揹包,先確定這個問題的狀態。共有n個物品,揹包總承重為v,那麼可以根據物品和容量來確定乙個狀態。前i個物品,放在揹包裡,總重量不超過j的前提下,所獲得的最大價值為dp[i][j]。

是否將第i個物品裝入揹包中,就是決策。為了使價值最大化,如果第i個物品放入揹包後,總重量不超過限制且總價值比之前要大,那麼就將第i個物品放入揹包。根據這個邏輯寫出轉移方程:

}有n種物品,第i種物品的體積是c[i],價值是w[i],每種物品的數量都是有限的,為n[i]。現有容量為v的揹包,請你放入若干物品,在總體積不超過v的條件下,使總價值盡可能大。

}當前有n種物品,第i種物品的體積是c[i],價值是w[i]。

每種物品的數量都是無限的,可以任意選擇若干件。

現有容量為v的揹包,請你放入若干物品,在總體積不超過v的條件下,使總價值盡可能大。

與01揹包問題的區別就是物品有無限多個.

LQ訓練營 C 學習筆記 棧與遞迴

棧是滿足一定約束的線性資料結構,約束是 只允許在棧的一端插入或刪除元素,這一端被稱為棧頂,另一端稱為棧底。向棧中壓入元素,稱為push 從棧頂彈出元素,稱為pop。棧的重要性質是先進先出 越早進入棧的元素,出來的時間越晚。通常用top指示棧頂的位置。include using namespace s...

LQ訓練營 C 學習筆記 動態規劃入門

1.3 動態規劃的優化原理與無後效性 2 動態規劃問題 2.2 蒜頭君下山問題 2.3 三維的蒜頭君回家問題 動態規劃是程式設計解題的一種重要手段,1951年美國數學家 bellman等人,根據一類多階段問題的特點,把多階段決策問題變成一系列相互聯絡的單階段問題,然後逐個解決。與此同時,他提出這類問...

Python訓練營 task2學習筆記

一 列表 1 定義 列表是有序集合,沒有固定大小,能夠儲存任意數量任意型別的 python 物件,語法為 元素1,元素2,元素n 2 新增元素 list.extend seq 在列表末尾一次性追加另乙個序列中的多個值 用新列表擴充套件原來的列表 3 刪除列表元素 二 元組 1 定義 語法為 元素1,...