rw 2010-11-17 04:23:00
点我顶贴
收藏
删除
测试结果1: 通过本测试点|有效耗时47ms
测试结果2: 通过本测试点|有效耗时47ms
测试结果3: 通过本测试点|有效耗时47ms
测试结果4: 通过本测试点|有效耗时47ms
测试结果5: 通过本测试点|有效耗时47ms
测试结果6: 通过本测试点|有效耗时46ms
测试结果7: 通过本测试点|有效耗时47ms
测试结果8: 测试结果错误.错误结果为:34458
正确结果应为:34803
测试结果9: 测试结果错误.错误结果为:29796
正确结果应为:34864
测试结果10: 测试结果错误.错误结果为:32132
正确结果应为:34966
#include "stdio.h"
long m,n,s[40][31000]={0},w[30],p[30],i,j;
long max(long a,long b)
{
if(a>b)return a;
return b;
}
int main()
{
scanf("%d%d",&m,&n);
for(i=1;i<=n;i++)
{
scanf("%d",&p[i]);
w[i]=p[i];
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(j-p[i]>=0)s[i][j]=max(s[i-1][j],s[i-1][j-p[i]]+w[i]);
else s[i][j]=s[i-1][j];
}
printf("%d",s[n][m]);
getchar();
getchar();
}