01背包问题
一维数组优化
for(int i=1;i<=n;i++)
for(int c=m;c>=0;c--)
if(c>=w[i])
f[c]=max(f[c],f[c-w[i]]+v[i]);
常数优化
for(int i=1;i<=n;i++)
{
sumw+=w[i];
bound=max(m-sumw,w[i]);
for(int c=m;c>=bound;c--)
if(c>=w[i])
f[c]=max(f[c],f[c-w[i]]+v[i]);
}

最低0.47元/天 解锁文章

1663

被折叠的 条评论
为什么被折叠?



