問題描述: 有n件物品和容量為m的背包 給出i件物品的重量以及價值 求解讓裝入背包的物品重量不超過背包容量 且價值最大 。
特點: 這是最簡單的背包問題,特點是每個物品只有壹件供妳選擇放還是不放。
① 二維解法
設f[i][j]表示前 i 件物品 總重量不超過 j 的最大價值 可得出狀態轉移方程
f[i][j]=max{f[i-1][j-a[i]]+b[i], f[i-1][j]}
在壹些情況下 題目的數據會很大 因此f數組不開到壹定程度是沒有辦法ac。
②壹維解法
設f[j]表示重量不超過j公斤的最大價值 可得出狀態轉移方程
f[j]=max{f[j], f[j?a[i]]+b[i]}
問題描述: 有n件物品和容量為m的背包 給出i件物品的重量以及價值 求解讓裝入背包的物品重量不超過背包容量 且價值最大 。
特點: 題幹看似與01壹樣 但它的特點是每個物品可以 無限選用 。
設f[j]表示重量不超過j公斤的最大價值 可得出狀態轉移方程
f[j] = maxj{f[j], f[j?a[i]]+b[i]}
問題描述: 有n件物品和容量為m的背包 給出i件物品的重量以及價值 還有數量 求解讓裝入背包的物品重量不超過背包容量 且價值最大 。
特點 : 它與完全背包有類似點 特點是每個物品都有了 壹定的數量 。
狀態轉移方程為:
f[j] = max{f[j], f[j?k?a[i]]+k?b[i]}
題目壹:
鏈接: .com/problems/coin-change-2/ 力扣(LeetCode)
題目:給定不同面額的硬幣和壹個總金額。寫出函數來計算可以湊成總金額的硬幣組合數。假設每壹種面額的硬幣有無限個。