01背包模板 开心的小明
注意转头方程
#include <stdio.h>
#include <string.h>
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int t;
int n,m;
int i,j;
int w[30],c[30];
int dp[30001];
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
scanf("%d%d",&w[i],&c[i]);
memset(dp,0,sizeof(dp));
for(i=1;i<=m;i++)
for(j=n;j>=w[i];j--)
dp[j]=max(dp[j],dp[j-w[i]]+w[i]*c[i]);
printf("%d\n",dp[n]);
}
return 0;
}

浙公网安备 33010602011771号