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

2021-09-26 07:22:55 字數 1053 閱讀 5452

好像從沒有系統的整理過……

【01揹包】

給你n種不同的物品,每個物品有自己的重量w[i],和價值v[i],如果每個物品只能拿一次,給你容量為m的揹包,怎樣才能取得最大價值?

memset(dp, 0, sizeof(dp));

for(int i=0; i=w[i]; j--)

}

【完全揹包】

給你n種不同的物品,每個物品有自己的重量w[i],和價值v[i],乙個物品可以拿多次,給你容量為m的揹包,怎樣才能取得最大價值?

memset(dp, 0, sizeof(dp));

for(int i=0; i【多重揹包】

給你n種不同的物品,每個物品有自己的重量w[i],和價值v[i],如果每個物品最多只能拿c[i]個,給你容量為m的揹包,怎樣才能取得最大價值?

int multiknapsack()

} }return dp[n][m];

}

#include #include using namespace std;

int n ;//物品個數

int w;//揹包容量

int weight[110];

int value[110] ;

int num[110];

int dp[110] ;///用f[j]表示,第i次迴圈後,f[j]中儲存的前i件物品放入容量為j的揹包可獲得的最大價值

void zeroonepack(int nweight,int nvalue)

}void completepack(int nweight,int nvalue)

}int multiknapsack()

else

zeroonepack(ncount * weight[i],ncount * value[i]);

} }return dp[w];

}int main()

揹包 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 ...

01揹包 完全揹包 多重揹包

01揹包 zeroonepack 有n件物品和乙個容量為v的揹包。每種物品均只有一件 第i件物品的費用是c i 價值是w i 求解將哪些物品裝入揹包可使價值總和最大。完全揹包 completepack 有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。第i種物品的費用是c i 價值是w i 求...