Hdu2191珍惜現在,感恩生活(多重揹包,模板)
http://acm.hdu.edu.cn/showproblem.php?pid=2191
思路分析:典型的多重揹包問題,開設一維陣列dp[],維數maxn便是最大價值量,之後按照上述思路雙重迴圈便是,dp[maxn]所對應的便是所能買到的最大情況。
dp[k]表示可以使用的價值量(理解為揹包,可用體積)的時候,物品的最大價值量,
dp[i]=max{dp[i],dp[k-v[i]]+w[i]},分兩種情況,
其實我們可以把多重揹包看成01揹包,每種物品進行n次的情況。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int main()
{
int T,n,m;
int v[105],w[105],num[105],dp[105];
cin>>T;
while(T--)
{
//m代表總共金額,n代表大米的種類
cin>>m>>n;
for(int i=0;i<n;i++)
//v[i]一袋大米的金額,w[i]一袋的重量,num[i]每種的數目。
cin>>v[i]>>w[i]>>num[i];
memset(dp,0,sizeof(dp));
for(int i=0;i<n;i++)
for(int j=0;j<num[i];j++)
for(int k=m;k>=v[i];k--)
dp[k]=max(dp[k],dp[k-v[i]]+w[i]);
cout<<dp[m]<<endl;
}
return 0;
}
相關文章
- HDU - 2191 珍惜現在,感恩生活(多重揹包板題)
- 01揹包、完全揹包、多重揹包詳解
- javascript演算法基礎之01揹包,完全揹包,多重揹包實現JavaScript演算法
- 【模板】01揹包、完全揹包
- hdu3591The trouble of Xiaoqian 多重揹包+全然揹包
- 005多重揹包問題||
- 【BZOJ 5003】與鏈 (多重揹包 dp)
- 深入剖析多重揹包問題(上篇)
- 深入剖析多重揹包問題(下篇)
- 01揹包和完全揹包問題解法模板
- 小時候總是不懂珍惜和感恩
- 常用揹包dp模板(未完待續)
- 多重揹包問題的單調佇列優化佇列優化
- 多重揹包動態規劃及空間優化動態規劃優化
- 揹包問題(01揹包與完全揹包)
- 揹包DP——完全揹包
- 揹包DP——混合揹包
- 分組揹包、完全揹包
- 揹包
- 01揹包、有依賴的揹包
- 01 揹包
- 揹包DP
- 揹包問題
- 模板問題:Knapsack (LeetCode: Coin Change)[揹包問題九講筆記]LeetCode筆記
- 程式碼隨想錄演算法訓練營第四十六天| 139.單詞拆分 多重揹包 揹包問題總結篇!演算法
- 01揹包問題
- dp-完全揹包
- 通天之分組揹包
- 01 揹包問題
- 揹包九講(部分)
- 【例9.14】混合揹包
- POJ 2184 (01揹包)
- 51nod 1597 有限揹包計數問題 (揹包 分塊)
- 揹包 學習筆記筆記
- 揹包題型總結
- 揹包問題大合集
- 01 揹包的變形
- 經典揹包問題