• 01背包问题


    01背包问题刷题总结:


    125. 
    背包问题 II

    中文

    English

     n 个物品和一个大小为 m 的背包. 给定数组 A 表示每个物品的大小和数组 V 表示每个物品的价值.

    问最多能装入背包的总价值是多大?

    Example

    样例 1:

    输入: m = 10, A = [2, 3, 5, 7], V = [1, 5, 2, 4]

    输出: 9

    解释: 装入 A[1] A[3] 可以得到最大价值, V[1] + V[3] = 9

    样例 2:

    public class Solution {
    
    /**
    
    * @param m: An integer m denotes the size of a backpack
    
    * @param A: Given n items with size A[i]
    
    * @param V: Given n items with value V[i]
    
    * @return: The maximum value
    
    */
    
    public int backPackII(int m, int[] A, int[] V) {
    
    // write your code here
    
    int n = A.length;
    
    int[]f = new int[m+1];
    
    int i,w;
    
    for(i=1;i<=m;++i) {
    
    f[i] = -1;
    
    }
    
    for(i=1;i<=n;++i) {
    
    //f[0] f[1]
    
    for(w=m;w>=0;--w) {
    
    if(w>=A[i-1]&& f[w-A[i-1]]!=-1 ) {
    
    f[w] = Math.max(f[w],f[w-A[i-1]]+V[i-1] );
    
    }
    
    }
    
    }
    
    int res = 0;
    
    for (i=0;i<=m;++i) {
    
    if(f[i]!=-1) {
    
    res = Math.max(res,f[i]);
    
    }
    
    }
    
    return res;
    
     
    
    }
    
    }
    
     

    思路总结:

    把数组压成一行,一定要倒着求

     

     

     

    总结 backPack d方程:

    dp[i][w] = max( dp[i-1][w], dp[i-1][ w-A(i-1)] + V(i-1) )

     

    其中:

    dp[i][w] 表示用前 i 个物品拼出重量w时最大总价值。

    dp[i-1][w] 表示 i-1 个物品拼出重量 w时最大总价值

    最后一个是用前 i-1 个物品拼出总重量 w -A(i-1) 最大总价值,加上第 i个物品。

     

     

    Backpack 可行性

    --题面:要求不超过 Target时能拼出的最大重量

    --记录 f[i][w] = i个物品能不能拼出重量 w

    backpack V, backpack VI , 计数型背包

    --题面:要求有多少种方式拼出重量 Target

    -- 记录 f[i][w] = i个物品有多少种方式拼出重量 w

    backpack II, backpack iii , 最值型

    -- 题面:记录能拼出的最大价值

    -- 记录f[i][w] = i /种物品拼出重量 w能得到的最大价值

     

     

    关键点:

    -最后一步:

    1. 最后一个背包内物品是哪个

    2. 最后一个物品有没有背包

    -数组大小和最大承重 Target有关

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    操作MySQL数据库相关代码
    JSP(1)
    servlet(6)
    servlet(5)
    Java易错知识点(2)
    Java Web项目中解决中文乱码方法总结
    Java易错知识点(1)
    servlet(4)
    TCP协议之三次握手四次挥手
    day-4 map&filter
  • 原文地址:https://www.cnblogs.com/lyr-2000/p/13060521.html
Copyright © 2020-2023  润新知