第九章 動態規劃-1294:Charm Bracelet

1294:Charm Bracelet

時間限制: 1000 ms 內存限制: 65536 KB
提交數: 3514 通過數: 1817
【題目描述】
經典0—1揹包問題,有n個物品,編號爲i的物品的重量爲w[i],價值爲c[i],現在要從這些物品中選一些物品裝到一個容量爲m的揹包中,使得揹包內物體在總重量不超過m的前提下價值儘量大。

【輸入】
第1行:兩個整數,n(物品數量,n≤3500)和m(揹包容量,m≤12880)。

第2…n+1行::每行二個整數w[i],c[i],表示每個物品的重量和價值。

【輸出】
僅一行,一個數,表示最大總價值。

【輸入樣例】
4 6
1 4
2 6
3 12
2 7
【輸出樣例】
23
【提示】
No


思路:01揹包問題

#include<cstdio>
#include<iostream>
using namespace std;
int f[20000];
int w[4000];
int c[4000];
int main(){
	int n,m;
	cin >> m >> n;
	int i,j;
	for(i = 1 ; i <= m; i++)
	cin >> w[i] >> c[i];
	for(i = 1; i <= m; i++)
	  for(j = n; j >= w[i];j--)
	  f[j] = max(f[j],f[j-w[i]] + c[i]);//判斷是否放入揹包
	  cout << f[n] << endl;
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章