zoukankan      html  css  js  c++  java
  • 51nod1085 背包问题【动态规划】

    在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2……Wn(Wi为整数),与之相对应的价值为P1,P2……Pn(Pi为整数)。求背包能够容纳的最大价值。

    Input

    第1行,2个整数,N和W中间用空格隔开。N为物品的数量,W为背包的容量。(1 <= N <= 100,1 <= W <= 10000)
    第2 - N + 1行,每行2个整数,Wi和Pi,分别是物品的体积和物品的价值。(1 <= Wi, Pi <= 10000)

    Output

    输出可以容纳的最大价值。

    Input示例

    3 6
    2 5
    3 8
    4 9

    Output示例

    14

    思路:典型的01背包,根据递推关系式dp[i+1][j]=max(dp[ i ][ j ],dp[ i ][ j - w[i] ]+ v[ i ]) 即可求解。

    #include <iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int dp[105][10005],c[10005],w[10005];
    int main()
    {
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;++i)
            scanf("%d%d",&w[i],&c[i]);
        memset(dp,0,sizeof(dp));
        for(int i=1;i<=n;++i)
        {
            for(int j=1;j<=m;++j)
            {
                if(j<w[i])
                    dp[i][j]=dp[i-1][j];
                else
                    dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+c[i]);
            }
        }
        printf("%d
    ",dp[n][m]);
        return 0;
    }
    

    另外我们可以将其优化成一维数组,减少内存。

    #include <iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int dp[13000],c[10005],w[10005];
    int main()
    {
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;++i)
            scanf("%d%d",&w[i],&c[i]);
        memset(dp,0,sizeof(dp));
        for(int i=1;i<=n;++i)
        {
            for(int j=m;j>=w[i];--j)
            {
                    dp[j]=max(dp[j],dp[j-w[i]]+c[i]);
            }
        }
        printf("%d
    ",dp[m]);
        return 0;
    }
    
  • 相关阅读:
    List of the best open source software applications
    Owin对Asp.net Web的扩展
    NSwag给api加上说明
    'workspace' in VS Code
    unable to find valid certification path to requested target
    JMeter的下载以及安装使用
    exception disappear when forgot to await an async method
    Filter execute order in asp.net web api
    记录web api的request以及response(即写log)
    asp.net web api的源码
  • 原文地址:https://www.cnblogs.com/aerer/p/9930954.html
Copyright © 2011-2022 走看看