zoukankan      html  css  js  c++  java
  • 3.完全背包(不限个数)

    /**
     * FileName: Main
     * Author:   Jerry
     * Date:     2020/1/27 20:54
     * Description: 完全背包
     */
     
    public class Main {
        /*
        * @ V 背包容积
        * @ N 商品种类
        * @ int []value 商品价值
        * @ int []weight 商品重量
        * */
        public static void completePack(int V,int N,int[] weight,int []value)
        {
            int [][] dp =new int[N+1][V+1];
            int temp;
            int [] t =new int[N+1];
            //初始化动态规划数组
            for(int i=1;i<=N;i++)
            {
                for(int j=1;j<=V;j++)
                {
                    if(j>=weight[i])
                    {
                        int max = j/weight[i];
                        for(int k=0;k<=max;k++)
                        {
                            temp=Math.max(dp[i-1][j],dp[i-1][j-k*weight[i]]+k*value[i]);
                            if(dp[i][j]<temp)
                                t[i]=k;
                            dp[i][j]=Math.max(dp[i][j],temp);
                        }
                    }
                    else
                        dp[i][j]=dp[i-1][j];
                }
            }
            int maxValue = dp[N][V];
            System.out.println("最大价值为"+maxValue);
            int j =V;
            String numStr = "";
            for(int i=N;i>=1;i--)
            {
                if(dp[i][j]>dp[i-1][j])
                {
                    numStr=numStr+"商品种类"+i+"该商品共"+t[i]+"件   ";
                    j=j-weight[i];
                }
                if(j==0)
                    break;
            }
            System.out.println(numStr);
     
        }
     
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int[] weight= {0,1,2,3};
            int[] value= {0,6,13,20};
            int bagV=15;
            int N=3;
            completePack(bagV,N,weight,value);
     
        }
    }
    

      

  • 相关阅读:
    UVA11039
    UVA10970大块巧克力
    UVA10970大块巧克力
    UVA10340子序列
    UVA10340子序列
    UVA10382喷水装置
    UVA10382喷水装置
    UVA10020(最小区间覆盖)
    洛谷 P2141 珠心算测验
    UVa 11292 勇者斗恶龙(The Dragon of Loowater)
  • 原文地址:https://www.cnblogs.com/AccompanyingLight/p/12269363.html
Copyright © 2011-2022 走看看