zoukankan      html  css  js  c++  java
  • 背包模板(01背包,完全背包,多重背包)

    背包模板(01背包,完全背包,多重背包)
    一、01背包:
    #define N ..///N这个值是根据具体的题目来定的
    int v;   ///v为总的容量
    int dp[N];
    
    void ZeroOnePack(int cost,int weight)
    {
        for(int j=v;j>=cost;j--)   ///注意是逆序的
            dp[j]=max(dp[j],dp[j-cost]+weight);
    }
     
    
    二、完全背包:
    
    #define N ..///N这个值是根据具体的题目来定的
    int v;   ///v为总的容量
    int dp[N];
    
    void CompletePack(int cost,int weight)
    {
        for(int j=cost;j<=v;j++)   ///注意是顺序的
            dp[j]=max(dp[j],dp[j-cost]+weight);
    }
     
    三、多重背包:
    
    
    #define N ..///N这个值是根据具体的题目来定的
    int v;   ///v为总的容量
    int dp[N];
    
    void MultiplePack(int cost,int weight,int amount){
        if(cost*amount>=v)
            CompletePack(cost,weight);
        else
        {
            int k=1;
            while(k<amount)
            {
                ZeroOnePack(k*cost,k*weight);
                all-=k;
                k+=k;
            }
            ZeroOnePack(amount*cost,amount*weight);
        }
    }
  • 相关阅读:
    LAMP 环境搭建
    环境搭建/安装部署
    Linux 系统安装(5分钟)
    Eclipse 配置
    wsdl生成的客户端
    Oracle 修改字符集
    jquery expand
    js中不常用的对象或方法
    js中面向对象的封装
    JavaScript点击li显示索引
  • 原文地址:https://www.cnblogs.com/qq2424260747/p/4485164.html
Copyright © 2011-2022 走看看