文章出处:极客时间《数据结构和算法之美》-作者:王争。该系列文章是本人的学习笔记。

背包能够承受的总重量一定w,每个物品的总量不同int[] weight表示,每个物品的价值不同用int[] values表示。怎么放才能让背包中物品不超过最大重量,而且价值最大。

这道题目在0-1背包问题上升级了,多了一个价值这个维度。我们就在上一版本基础上调整。state存放当前状态下的最大价值。

 public int knapsnackV3(int[] weight,int[] value, int n,int w){int[][] state = new int[n][w+1];int maxValue = -1;for(int i=0;i<n;i++){Arrays.fill(state[i],-1);}state[0][0] = 0;if(weight[0]<w){state[0][weight[0]] = value[0];}for(int i=1;i<n;i++){//不放入第i物品for(int j=0;j<=w;j++){if(state[i-1][j]>-1){state[i][j] = state[i-1][j];}}//放入第i物品for(int j=0;j<=w-weight[i];j++){if(state[i-1][j]>-1){int v = state[i-1][j]+value[i];if(v>state[i][j+weight[i]]){state[i][j+weight[i]] = v;}}}}for(int j=w;j>=0;j--){if(state[n-1][j]>-1){maxValue = Math.max(maxValue,state[n-1][j]);}}return maxValue;}

动态规划——背包问题升级相关推荐

  1. 贪婪算法、递归计算、动态规划背包问题

    //贪婪算法计算背包问题public static double ksack(double[] values, double[] weights, int capacity){double load ...

  2. 动态规划——背包问题(01背包问题)

    动态规划--背包问题(01背包问题) 01背包问题(求最大价值): 问题优化 01背包问题(求方案数): 动态规划--背包问题(01背包问题) 01背包问题(求最大价值): 有N件物品和一个最多能背重 ...

  3. 动态规划背包问题优化空间复杂度——滚动数组

    动态规划背包问题优化空间复杂度--滚动数组 背包问题 空间复杂度优化 Java代码 链接:代码随想录背包问题 背包问题   背包问题是动态规划中基本的问题,我们考虑下面的简单问题:   假设背包容量为 ...

  4. 动态规划——背包问题(详解)

    动态规划是我最早接触的算法,一开始非常简单,固定模板题,后来愈发愈发难起来了,条件,状态压缩等等,难点主要是,状态怎么表示,状态转移方程怎么写,这篇文章将会从背包五大问题详解,希望能帮助到大家去类比, ...

  5. 动态规划——背包问题

    动态规划--背包问题 对于背包问题,今天我们先讲解,01背包,完全背包,和多重背包.我主要从: 什么题可以用背包问题解决 背包问题的模板细节,如何准确写出背包. 1.什么题可以用背包问题解决 看到题目 ...

  6. 动态规划背包问题详解(二)---0-1背包问题

    /**  * 对于技术面试,你还在死记硬背么?  * 快来"播"沙糖橘吧,  * 用视频案例为你实战解读技术难点  * 聚焦Java技术疑难点,实战视频为你答疑解惑  * 越&qu ...

  7. 【入门级】Java解决动态规划背包问题

    目录 前言 动态规划背包问题是什么? 动态规划解题转代码 第一步:拆包填表格 第二步:转为代码 一.首先看空表格:即初始化代码 二.看怎么循环填表格 三.输出结果(最大价值) 第三步:完整代码 动态规 ...

  8. Java-算法-动态规划-背包问题

    看完本篇文章可以再多练习相似题目 算法-动态规划-背包问题-附一 ​​​​​​​ 一. 背包问题介绍 1. 最原始的背包问题 给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择 ...

  9. 动态规划---背包问题分析

    0/1背包 问题描述 有N件物品和一个容量为V的背包,第i件物品的体积为c[i],价值为w[i].求将哪些物品放进背包可以使物品价值总和最大(有两种情况:不要求填满背包和填满背包). 每件商品只有一件 ...

最新文章

  1. Operation Queues并发编程
  2. 万字长文总结机器学习的模型评估与调参
  3. 工厂模式、策略者模式、责任链模式综合应用
  4. ID3 Algorithm for Decision Trees
  5. PaddlePaddle yolov3
  6. 2005年中国之“至理名言”
  7. php签名墙代码,我们是一家人(签名墙)
  8. #6284. 数列分块 8 分块
  9. ruhr启动mysql数据库_Mysql表类型(存储引擎)的选择
  10. 现在输入 n 个数字, 以逗号, 分开; 然后可选择升或者 降序排序;
  11. 关于HAL.DLL文件丢失导致系统无法启动的问题
  12. 快速去除PDF的打开密码和限制(四种方法)
  13. VMware中的Fedora9下安装VMtool后图形界面无法启动
  14. 《硅谷钢铁侠的跨界传奇-埃隆马斯克传》阅读笔记
  15. 产品经理/技术总监的能力模型
  16. 滴滴征战澳洲 全球“追击”优步
  17. android 6.0 vs ios9,安卓6.0彻底看呆!iOS 9安装率曝光 完胜
  18. Ansys/Abaqus/nbsp;热应力分析.20…
  19. 用php编写一个同学录,PHP+DBM的同学录程序(2)
  20. TeachingKids-一款针对2到6岁宝宝的教育类游戏,目前可以让宝宝认知一些基础的水果,并进行简单的测验。

热门文章

  1. .NET深入实战系列—Linq to Sql进阶
  2. CozyRSS开发记录8-解析一份RSS
  3. 写一个简单控制台启动的mcv服务
  4. XSS与CSRF两种跨站攻击比较
  5. [转]android 获取 imei号码
  6. struts-config message-resources配置问题总结
  7. Linux文件系统中的链接
  8. rocketmq 初探(四)
  9. 第8章-常用优先级和css3
  10. Centos7安装MySQL(多图)