http://acm.nyist.net/JudgeOnline/problem.php?pid=49
代码其实不是自己的,开始自己写,觉得自己跟他的完全一样,但就是过不了,然后我一行一行改,终于发现错误。
#include <string.h>
#include <stdio.h>
int DP[30005];
#define MAX(a,b) a>b?a:b
int main()
{
int N,i,j,P,p,m,v;
scanf("%d",&N);
while(N--)
{
memset(DP,0,sizeof(DP));
scanf("%d %d",&P,&m);
for(int i=0;i<m;i++)
{
scanf("%d %d",&v,&p);
for(int j=P;j>=v;j--)
{
DP[j]=MAX(DP[j-v]+v*p,DP[j]);
}
}
printf("%d\n",DP[P]);
}
}