这是我第一次碰到背包的题目,做的很烂,还是看过背包九讲的,唉~
简单的多重背包
#include "stdio.h"
#include "string.h"
#define MAX(a,b) ((a)>(b)?(a):(b))
int dp[90000];
int main()
{
int T;
int n,m;
int p,w,b;
int i,j,k;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
memset(dp,0,sizeof(dp));
for(i=0;i<m;i++)
{
scanf("%d%d%d",&p,&w,&b);
for(k=n;k>=0;k--)
{
for(j=b;j>=0;j--)
{
if(j*p<=k)
{
dp[k]=MAX(dp[k-j*p]+j*w,dp[k]);
}
}
}
}
printf("%d\n",dp[n]);
}
}