c++01背包一维数组版及java多重背包

Posted z2529827226

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++01背包一维数组版及java多重背包相关的知识,希望对你有一定的参考价值。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1010;
int c[maxn],w[maxn];
int dp[maxn];
int main()
    int n,v;
    cin>>n>>v;
    for(int i=1;i<=n;i++) cin>>c[i];
    for(int i=1;i<=n;i++) cin>>w[i];

    for(int i=1;i<=n;i++)
        for(int j=v;j>=c[i];j--)                //为了防止之前的结果影响之后的必须从尾部向前走,因为这是01背包一维数组,每种物品只能选择一个
            dp[j]=max(dp[j],dp[j-c[i]]+w[i]);   //在完全背包下可以从前往后走,因为物品的个数是无限个,而多重背包与01背包一般情况下都可以相互转换的,所以多重只是对物品分了类而已相同的物品在一个类中,数量多了几个
//01背包则没有分类这一说,都是一样的 printf(
"%d\n",dp[v]); return 0;
class Solution

   private int v[];   //价值
   private int c[];   //数量
   private int w[];   //体积
   private int num;   //物品的种数
   private int k;     //物品的总数
   private int dp[];  //最大价值表
   private int cnt;   //背包的最大容量 
   private Scanner iner=new Scanner(System.in);

   public int Selected()
   
    for(int i=0;i<this.k;++i)
    
        for(int j=this.cnt;j>=this.w[i];--j)
        
            dp[j]=Math.max(dp[j], dp[j-this.w[i]]+this.v[i]);
        
    
    return dp[this.cnt];
   

   public Solution()
    
       System.out.print("请输入背包的最大容量:");
       this.cnt=iner.nextInt();
       System.out.print("请输入物品的种数:");
        this.num=iner.nextInt();
        this.c=new int[this.num+100];
        this.w=new int[this.num+100];
        this.dp=new int[this.num+100];
        this.v=new int[this.num+100];
       System.out.print("请输入每种物品的价值体积及数量:");
       for(int i=0;i<this.num;++i)
       
        this.v[i]=iner.nextInt();
        this.w[i]=iner.nextInt();
        this.c[i]=iner.nextInt();
       
       this.k=this.num;
       for(int i=0;i<this.num;++i)
       
        while(this.c[i]!=1)
        
          this.v[k]=this.v[i];
          this.w[k]=this.w[i];
          this.c[i]--;
          this.c[k]=this.c[i];
          k++;
        
       
   

 

以上是关于c++01背包一维数组版及java多重背包的主要内容,如果未能解决你的问题,请参考以下文章

动态规划问题3--多重背包

今天就来揭开多重背包的面纱!!!

leetcode 474. 一和零

多重背包问题

背包整理(01背包,完全背包,多重背包,分组背包)(待更新)

动态规划背包问题 01背包 完全背包 多重背包