zoukankan      html  css  js  c++  java
  • 01背包问题

    01背包问题用DP(动态规划实现)

    背包容量int c = 10

    物品个数int n = 5

    物品重量w[] = {0, 2, 2, 6, 5, 4}

    物品价值v[] = {0, 6, 3, 5, 4, 6}

    结果存放result[][] = new int[n + 1][c + 1]//result[i][j]的意义,i个物品中放到容量为j中最大价值(放或者不放两种情况)

    递推关系result[i][j] = max{result[i - 1][j], result[i - 1][j - w[i]] + v[j]}

     1 package com.gxf.bag;
     2 
     3 /**
     4  * 背包问题
     5  * @author Administrator
     6  *
     7  */
     8 public class Bag {
     9     int n = 5;//物品个数
    10     int w[] = {0, 2, 2, 6, 5, 4};//物体重量
    11     int v[] = {0, 6, 3, 5, 4, 6};//物体价值
    12     int c = 10;//背包容量
    13     int result[][] = new int[n + 1][c + 1];//注意这里的意义,这里应该可以压缩,最后结果存放在result[n][c]中
    14     
    15     public int getMaxValue(){//result[i][j] 第i个物体放到容量为j的背包中最大价值
    16         
    17         for(int i = 0; i <= n; i++){
    18             for(int j = 0; j <= c; j++){
    19                 if(0 == i){
    20                     result[i][j] = 0;//没有物品放入,价值为0
    21                 }
    22                 else if(j > 0 && j >= w[i]){
    23                     result[i][j] = Math.max(result[i - 1][j], result[i - 1][j - w[i]] + v[i]);
    24                 }
    25             }
    26         }
    27         
    28         return result[n][c];
    29     }
    30     /**
    31      * 打印数组result
    32      */
    33     public void showResult(){
    34         for(int i = 0; i <= n; i++){
    35             for(int j = 0; j <= c; j++){
    36                 System.out.print(result[i][j] + "	");
    37             }
    38             System.out.println();
    39         }
    40     }
    41     
    42     /**
    43      * 测试
    44      * @param args
    45      */
    46     public static void main(String args[]){
    47         Bag bag = new Bag();
    48         System.out.println(bag.getMaxValue());
    49         //bag.showResult();
    50     }
    51 }
  • 相关阅读:
    java 14 -7 Date
    java 14 -6 BigInteger和BigDecimal
    java 14 -5 System类
    java14-4 Pattern和Matcher类的使用
    java 14-3 正则表达式的分割
    转:StringBuilder与StringBuffer的区别(转)
    kafka之config/server.properties配置参数说明
    Kafka内核理解:消息的收集/消费机制
    kafka删除topic及其相关数据
    kafka使用问题解决
  • 原文地址:https://www.cnblogs.com/luckygxf/p/4095726.html
Copyright © 2011-2022 走看看