若昕 2013-08-08 02:26:00
点我顶贴
收藏
删除
虽然一次AC,但不知道for(j=tot;j>=t[i];j--)中为什么要有j--?j减的是1吗?
#include"stdio.h"
#include"string.h"
long f[10002],t[10002],d[10002];
long max(long x,long y)
{if(x>=y) return x;
else return y;}
int main()
{
long tot,m,i,j;
scanf("%ld%ld",&tot,&m);
for(i=1;i<=m;i++)
scanf("%ld%ld",&t[i],&d[i]);
memset(f, 0, sizeof(f));
for(i=1;i<=m;i++)
for(j=tot;j>=t[i];j--)
f[j]=max(f[j],f[j-t[i]]+d[i]);
printf("%ld",f[tot]);
getch();
}