zoukankan      html  css  js  c++  java
  • 0-1 Knapsack proble

     1 package Three;
     2 
     3 public class KNAPSACK {
     4     public static int [][]  KNAPSACK_DP(int[] v,int [] w,int W) 
     5     {
     6         int n=w.length-1;
     7         int[][] c=new int[n+1][W+1];
     8         for(int j=0;j<=W;j++)
     9         {
    10             c [0][j]=0;
    11         }
    12         for(int i=0;i<=n;i++)
    13         {
    14             c[i][0]=0;
    15         }
    16         for(int i=1;i<=n;i++){//前i个物品
    17             for(int j=1;j<=W;j++)
    18             {
    19                 //if(w[i]<=W)
    20                 //{
    21                     if(w[i]<=j)//当前最大容量为j
    22                     {
    23                         if(v[i]+c[i-1][j-w[i]]>c[i-1][j])
    24                             c[i][j]=v[i]+c[i-1][j-w[i]];
    25                         else c[i][j]=c[i-1][j];    
    26                     }
    27                 //}
    28                 else c[i][j]=c[i-1][j];        
    29             }
    30         }
    31         return c;//[n][W];
    32     }
    33     public static void PrintArray(int [][] array,int W)
    34     { 
    35         int n=array.length-1;
    36         for(int i=1;i<=n;i++){
    37             for(int j=1;j<=W;j++){
    38                 System.out.print(array[i][j]+" ");
    39             }
    40             System.out.println();
    41         }
    42         System.out.println();
    43         System.out.println("the biggist value is "+array[n][W]);
    44         
    45     }
    46     public static void main(String[] args)
    47     {
    48         int [] weight={0,1,2,5,6,7};//考虑到28行有c[i-1],在前面添一个0元素
    49         int [] value={0,1,6,18,22,28};
    50         int[][] c=KNAPSACK_DP(value,weight,11);
    51         //System.out.println("the biggist value is "+v);
    52         PrintArray(c,11);
    53     }
    54 
    55 }
  • 相关阅读:
    QR code 乱谈(一)
    用JAVA实现数字水印(可见)
    ctf总结
    Unix/Linux常用命令
    C语言概述
    C语言发发展历史
    为什么要学习C语言
    计算机应用领域
    计算机发展趋势
    如何学习计算机
  • 原文地址:https://www.cnblogs.com/Ljj-Nancy/p/5473737.html
Copyright © 2011-2022 走看看