开心的小明
http://acm.nyist.net/JudgeOnline/problem.php?pid=49
初学动态规划,写篇文章能够记录自己的成长。
#include"stdio.h"
#include"string.h"
int p[500000+10];
int main()
{
int v[50],w[50],i,j,n,num,max,temp;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&max,&num);
// memset(v,0,sizeof(int));
//memset(w,0,sizeof(int));
memset(p,0,sizeof(p));
for(i=1;i<=num;i++)
scanf("%d%d",&v[i],&w[i]);
for(i=1;i<=num;i++)
for(j=max;j>=v[i];j--)
{
temp=p[j-v[i]]+v[i]*w[i];
if(temp>p[j])
p[j]=temp;
}
printf("%d\n",p[max]);
}