输入n空格c n为物品个数,c为背包容量,n行,每行两个整数,一个是物品重量,一个是物品价值,输出背包能够得到的最大价值
#include <iostream>
#include <string.h>
#define max(a,b) a>b?a:b
int dp[100010];
int main()
{
int n,m,v;//m数目,v背包容量
scanf("%d",&n);
while(n--)
{
int c,w;
int i,j;
memset(dp,-0x3f,sizeof(dp));
dp[0]=0;
scanf("%d%d",&m,&v);
for(i=1;i<=m;i++)
{
scanf("%d%d",&c,&w);
for(j=c;j<=v;j++)
{
dp[j]=max(dp[j],dp[j-c]+w);
}
}
if(dp[v]<0)
printf("不能正好装满\n");
else
printf("%d\n",dp[v]);
}
return 0;
}