輸入
第1行,2個整數,N和W中間用空格隔開。N爲物品的數量,W爲揹包的容量。(1 <= N <= 100,1 <= W <= 10000) 第2 - N + 1行,每行2個整數,Wi和Pi,分別是物品的體積和物品的價值。(1 <= Wi, Pi <= 10000)
輸出
輸出可以容納的最大價值。
輸入示例
3 6 2 5 3 8 4 9
輸出示例
14
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int dp[110][10010];
struct Bag
{
int v;
int w;
}bag[10010];
int main()
{
int n,w1,i,j;
while(scanf("%d %d",&n,&w1) != EOF)
{
for(i=1;i<=n;i++)
scanf("%d %d",&bag[i].w ,&bag[i].v );
for(i=1;i<=n;i++)
{
for(j=0;j<=w1;j++)
{
if(j>=bag[i].w)
dp[i][j]=max(dp[i-1][j],dp[i-1][j-bag[i].w]+bag[i].v);
else
dp[i][j]=dp[i-1][j];
}
}
printf("%d\n",dp[n][w1]);
}
return 0;
}