//hdu1114
//寫在前面:這裡給出hdu1114題作為樣例
//完全揹包問題:有n種物品,每i種物品的體積為vc[i],價值為w[i],數量不限
//有一容量為c的揹包,問如何裝能使揹包的體積最大
//當使用二維陣列時的狀態轉移方程為:dp[i][v]=max(dp[i-1][v],dp[i][v-vc[i]]+w[i])
//空間優化後的狀態轉移方程變為:dp[v]=max(dp[v],dp[v-vc[i]+w[i])
//這裡又分為裝滿和不裝滿問題;這時dp陣列的初始化將會有差別
//不裝滿是dp陣列全為0,dp[0]=0;裝滿時dp=inf(inf為極大值或極小值)dp[0]=0;
#include #include #define maxn 505
#define inf 0x3f3f3f3f
using namespace std;
int p[maxn];int w[maxn];
int dp[10005];
int path[maxn][10005];//列印路徑陣列
int min(int a,int b)
}} if(dp[f-e]!=inf)cout<<"the minimum amount of money in the piggy-bank is "<=0&&j>=0)
else i--;
} cout<<'\n';*/ }}
/*310 110
21 1
30 50
10 110
21 1
50 30
1 62
10 3
20 4
*/
完全揹包問題 一維空間優化
有 n 種物品和乙個容量是 v 的揹包,每種物品都有無限件可用。第 i 種物品的體積是 vi,價值是 wi。求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。輸出最大價值。輸入格式 第一行兩個整數,n,v,用空格隔開,分別表示物品種數和揹包容積。接下來有 n 行,每行兩個整數...
完全揹包問題的優化
有 n 種物品和乙個容量為 v 的揹包,每種物品都有無限件可用。放入第 i 種物品的體積是 ci,價值是 wi。求將哪些物品裝入揹包,可使這些物品的耗費的費用總和不超過揹包容量,且重量總和最大。首先,要將 ci 大於 v 的物品剔除。其次,對於任意正整數 i 和 j,如果有 ci cj 且 wi w...
完全揹包問題 列印揹包中的物品
與0 1揹包問題不同的是,每個物品可以任意次放,只要小於總容量就行,這裡列印裝進去的物品,還列印每種物品裝了多少次 如下 include include include using namespace std int main int argc,char argv vectorresult capa...