zoukankan      html  css  js  c++  java
  • AC_4. 多重背包问题 I

    代码:

    //多重背包问题
    /*
    f[i] 总体积是i的情况下,最大价值是多少
    for (int i = 0;i<n;i++)
    {
        for(int j = V;j>=v[i];j--)
        {
            f[j] = max(f[j],f[j-v[i]]+w[i],f[j-2*v[i]]+2*w[i]...)
        }
    }
    1.f[i] = 0
    f[V]
    2.f[0] = 0 ,f[i] = inf, i != 0
    max(f[0...m])
    */
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int N, V;//物品数和背包容量
    const int NUM = 1005;
    int dp[NUM];
    int main()
    {
        cin >> N >> V;
        for (int i = 0; i < N; i++)
        {
            int v, w, n;//输入每件物品的体积  价值 和 个数
            cin >> v >> w >> n;
            for (int j = V; j >= 0; j--)//枚举所有的体积
            {
                for (int k = 0; k <= n && k*v<=j; k++)//看看每个体积下的价值最大是多少
                {
                    dp[j] = max(dp[j], dp[j - k*v] + k*w);//在计算的过程中每次存储最大价值
                }
            }
        }
        cout << dp[V] << endl;
        return 0;
    }
  • 相关阅读:
    Interesting Finds: 2009 01.15 ~ 01.17
    Interesting Finds: 2008.12.07
    Interesting Finds: 2008.12.31
    10月16号
    10月14号
    10月15号
    10月13号
    10月20号
    10月19号
    10月12号
  • 原文地址:https://www.cnblogs.com/gcter/p/11223092.html
Copyright © 2011-2022 走看看