01揹包,完全揹包

2021-07-26 07:52:41 字數 794 閱讀 6578

動態規劃

動態規劃的核心是狀態以及狀態轉移方程。

需要定義乙個(i,j)狀態以及該狀態的指標函式d(i,j)。

01揹包

有n種物品,每種只有乙個,第i件物品的體積為vi質量為wi。選一些物品裝到體積為c的揹包中,使其體積不超過c的前提下重量最大。

namevw

abcd

e 子問題定義:dp[i][j]表示第i件物品放在容量為j的揹包中的最大重量

dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+w[i]);重量。

**實現:

for(inti=1;i<=m;i++)//m件物品

} 空間優化:

for(int i=1;i<=m;i++) }

完全揹包

有n種物品,每種有無限件,第i件物品的體積為vi質量為wi。選一些物品裝到體積為c的揹包中,使其體積不超過c的前提下重量最大。

子問題定義:dp[i][j]表示第i件物品放在容量為j的揹包中的最大重量

dp[i][j]=max(dp[i-1][j],dp[i-1][j-k*v[i]]+k*w[i]);||0<=kv[i]<=c

for(int i=1;i<=n;i++)

}

01揹包 完全揹包

本文主要使用一維陣列進行使用 意思 01揹包 代表物品只有兩種狀態,只能使用一次。如,dp i max dp i dp i wight j value j 代表容量為i所獲得的最大利潤。完全揹包 乙個物品可以使用無限次 技巧 1.如果是0 1揹包,即陣列中的元素不可重複使用,nums放在外迴圈,ta...

揹包 01揹包,完全揹包,多重揹包

哈哈 01揹包 f i v max 完全揹包 f i v max 多重揹包 f i v max include include include include include define maxn 1000 using namespace std int n,cap int w maxn 重量 花...

01揹包 完全揹包 多重揹包

01揹包 zeroonepack 有n件物品和乙個容量為v的揹包,每種物品均只有一件。第i件物品的費用是c i 價值是w i 求解將哪些物品裝入揹包可使價值總和最大。include include includeusing namespace std const int n 1000 10 int ...