0-1揹包(0-1揹包簡單模板題)

給定n(n<=100)種物品和一個揹包。物品i的重量是wi,價值爲vi,揹包的容量爲C(C<=1000)。問:應如何選擇裝入揹包中的物品,使得裝入揹包中物品的總價值最大? 在選擇裝入揹包的物品時,對每種物品i只有兩個選擇:裝入或不裝入。不能將物品i裝入多次,也不能只裝入部分物品i。

輸入格式:
共有n+1行輸入: 第一行爲n值和c值,表示n件物品和揹包容量c; 接下來的n行,每行有兩個數據,分別表示第i(1≤i≤n)件物品的重量和價值。

輸出格式:
輸出裝入揹包中物品的最大總價值。

輸入樣例:
在這裏給出一組輸入。例如:

5 10
2 6
2 3
6 5
5 4
4 6

輸出樣例:
在這裏給出相應的輸出。例如:

15

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main (){
	int n,c,a[1005],b[1005],dp[1005];
	int maxl=0;
	memset(dp,0,sizeof(dp));
	scanf("%d %d",&n,&c);
	for(int i=1;i<=n;i++){
		scanf("%d %d",&a[i],&b[i]);
	}
	for(int i=1;i<=n;i++){
		for(int j=c;j>=a[i];j--){
			dp[j]=max(dp[j],dp[j-a[i]]+b[i]);
		}
	}
	for(int i=0;i<=c;i++){
		maxl=max(maxl,dp[i]);
	}
	printf("%d",maxl);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章