You have N items that you want to put them into a knapsack. Item ihas value vi and weight wi.
You want to find a subset of items to put such that:
- The total value of the items is as large as possible.
- The items have combined weight at most W, that is capacity of the knapsack.
Find the maximum total value of items in the knapsack.
Input
N W
v1 w1
v2 w2
:
vN wN
The first line consists of the integers N and W. In the following lines, the value and weight of the i-th item are given.
Output
Print the maximum total values of the items in a line.
Constraints
- 1 ≤ N ≤ 100
- 1 ≤ vi ≤ 1000
- 1 ≤ wi ≤ 1000
- 1 ≤ W ≤ 10000
Sample Input 1
4 5
4 2
5 2
2 1
8 3
Sample Output 1
13
Sample Input 2
2 20
5 9
4 10
Sample Output 2
9
n,m
a,w;
题意:n个产品,不超过m重量,接下来a代表一个产品的价格,w表示一个产品的重量,输出在不超过m重量的前提下,最大得到的价格
01背包模板
#include <iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
const int inf=0x3f3f3f;
int dp[10010];
int a[10100],w[10010];
int main()
{memset(dp,0,sizeof(dp));
int m,n;
cin>>n>>m;
for(int i=1; i<=n; i++)
cin>>a[i]>>w[i];
for(int i=1; i<=n; i++)
for(int j=m; j>=w[i]; j--)
dp[j]=max(dp[j],dp[j-w[i]]+a[i]);
printf("%d\n",dp[m]);
return 0;
}