zoukankan      html  css  js  c++  java
  • 二维背包

    Description

    给出一个背包,背包有体积容量C和重量限制L,再给出N个物品,每个物品有体积Vi,重量Wi,价值Pi三个参数。每个物品有且仅有一件,求用背包装物品,能获得的最大总价值是多少。

    Input

    文件的第一行一个数T,表示测试用例子数。接下来T个测试用例。

    每个测试用例第一行三个数,NCL (0 < N, C, L < 1000)。

    接下来N行,每行三个数ViWiPiVi < 1.5×C, Wi < 1.5×L, Pi < 1000)分别表示物品的体积,重量,价值三个属性。

    Output

    为每个测试用例输出一行结果:所装物品价值的最大值。

    Sample Input

    1
    3 5 5
    2 3 1
    3 2 1
    3 3 3

    Sample Output

    3

    #include<iostream>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    #define NUM 1002
    #define INF -66536
    int v[NUM],w[NUM],p[NUM]; //分别表示物品的体积,重量,价值三个属性。
    int f[NUM][NUM]; //f[v][w]
    int N,C,L;//N个物品,背包C体积容量,L重量
    int knapsack(){
        memset(f,0,sizeof(f));
        for(int i=0;i<N;i++){ //物品的种类
            for(int j=C;j>=v[i];j--){ //物品的体积
                for(int k=L;k>=w[i];k--) //物品的质量
                    f[j][k]=max(f[j-v[i]][k-w[i]]+p[i],f[j][k]);
            }
        }
        return f[C][L];
    }
    int main()
    {
        int T; //测试用例
        cin >> T;
        for(int i=1;i<=T;i++)
        {
            cin >> N >> C >> L;
            for(int i=0; i<N; i++){
                cin >> v[i] >> w[i] >> p[i];
            }
            cout << knapsack()<<endl;
        }
        return 0;
    }
  • 相关阅读:
    使用强名称为程序集签名
    使用SN.exe对.Net生成的程序集进行签名
    .Net 程序集 签名工具sn.exe 密钥对SNK文件 最基本的用法
    MongoDB查询
    mongo批量写入es
    用 Spark 处理复杂数据类型(Array、Map、JSON字符串等)
    kafka消费者
    kafka生产者
    Pyspark常用API总结
    selenium+chromedriver+python3 不加载图片
  • 原文地址:https://www.cnblogs.com/dichuan/p/8243029.html
Copyright © 2011-2022 走看看