51NOD-01085 背包问题

Posted ONION_CYC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51NOD-01085 背包问题相关的知识,希望对你有一定的参考价值。

【算法】背包DP

【题解】f[j]=(f[j-w[i]]+v[i]) 记得倒序(一个物品只能取一次)

技术分享
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=10010;
int n,W,w[maxn],v[maxn],f[maxn];
int main()
{
    scanf("%d%d",&n,&W);
    for(int i=1;i<=n;i++)scanf("%d%d",&w[i],&v[i]);
    for(int i=1;i<=n;i++)
    {
        for(int j=W;j>=w[i];j--)
        {
            f[j]=max(f[j],f[j-w[i]]+v[i]);
        }
    }
    printf("%d",f[W]);
    return 0;
}
View Code

 

以上是关于51NOD-01085 背包问题的主要内容,如果未能解决你的问题,请参考以下文章

如何完成活动? (喷气背包导航)

51nod 1086 背包问题 V2(二进制优化多重背包)

51nod 1257 背包问题 V3(这不是背包问题是二分)

防止导航到同一个片段

51nod 1085 背包问题

[51nod1597]有限背包计数问题