動態規劃
動態規劃的核心是狀態以及狀態轉移方程。
需要定義乙個(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 ...