很简单的一题,但是对DP很不熟悉,这好像也是第一次自己写dp的题目,写下错误吧。
#include <stdio.h>
int main()
{
long n,m,i,j,a[30001]={0},v[26],w[26];
scanf("%ld%ld",&n,&m);
for(i=0;i<m;i++)
scanf("%ld%ld",&v[i],&w[i]);
for(i=0;i<m;i++)
for(j=n;j>=v[i];j--)
if(a[j-v[i]]+v[i]*w[i]>a[j])a[j]=a[j-v[i]]+v[i]*w[i];
printf("%ld",a[n]);
return 0;
}
很基础的一题,但是在开始对n和m的含义弄混了,导致无输出。
后来在for(j=n;j>=v[i];j--)
中判断条件设成了j>0 没用弄清具体含义,下次要注意。