动态规划——背包问题升级
文章出处:极客时间《数据结构和算法之美》-作者:王争。该系列文章是本人的学习笔记。
背包能够承受的总重量一定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;}
动态规划——背包问题升级相关推荐
- 贪婪算法、递归计算、动态规划背包问题
//贪婪算法计算背包问题public static double ksack(double[] values, double[] weights, int capacity){double load ...
- 动态规划——背包问题(01背包问题)
动态规划--背包问题(01背包问题) 01背包问题(求最大价值): 问题优化 01背包问题(求方案数): 动态规划--背包问题(01背包问题) 01背包问题(求最大价值): 有N件物品和一个最多能背重 ...
- 动态规划背包问题优化空间复杂度——滚动数组
动态规划背包问题优化空间复杂度--滚动数组 背包问题 空间复杂度优化 Java代码 链接:代码随想录背包问题 背包问题 背包问题是动态规划中基本的问题,我们考虑下面的简单问题: 假设背包容量为 ...
- 动态规划——背包问题(详解)
动态规划是我最早接触的算法,一开始非常简单,固定模板题,后来愈发愈发难起来了,条件,状态压缩等等,难点主要是,状态怎么表示,状态转移方程怎么写,这篇文章将会从背包五大问题详解,希望能帮助到大家去类比, ...
- 动态规划——背包问题
动态规划--背包问题 对于背包问题,今天我们先讲解,01背包,完全背包,和多重背包.我主要从: 什么题可以用背包问题解决 背包问题的模板细节,如何准确写出背包. 1.什么题可以用背包问题解决 看到题目 ...
- 动态规划背包问题详解(二)---0-1背包问题
/** * 对于技术面试,你还在死记硬背么? * 快来"播"沙糖橘吧, * 用视频案例为你实战解读技术难点 * 聚焦Java技术疑难点,实战视频为你答疑解惑 * 越&qu ...
- 【入门级】Java解决动态规划背包问题
目录 前言 动态规划背包问题是什么? 动态规划解题转代码 第一步:拆包填表格 第二步:转为代码 一.首先看空表格:即初始化代码 二.看怎么循环填表格 三.输出结果(最大价值) 第三步:完整代码 动态规 ...
- Java-算法-动态规划-背包问题
看完本篇文章可以再多练习相似题目 算法-动态规划-背包问题-附一 一. 背包问题介绍 1. 最原始的背包问题 给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择 ...
- 动态规划---背包问题分析
0/1背包 问题描述 有N件物品和一个容量为V的背包,第i件物品的体积为c[i],价值为w[i].求将哪些物品放进背包可以使物品价值总和最大(有两种情况:不要求填满背包和填满背包). 每件商品只有一件 ...
最新文章
- Operation Queues并发编程
- 万字长文总结机器学习的模型评估与调参
- 工厂模式、策略者模式、责任链模式综合应用
- ID3 Algorithm for Decision Trees
- PaddlePaddle yolov3
- 2005年中国之“至理名言”
- php签名墙代码,我们是一家人(签名墙)
- #6284. 数列分块 8 分块
- ruhr启动mysql数据库_Mysql表类型(存储引擎)的选择
- 现在输入 n 个数字, 以逗号, 分开; 然后可选择升或者 降序排序;
- 关于HAL.DLL文件丢失导致系统无法启动的问题
- 快速去除PDF的打开密码和限制(四种方法)
- VMware中的Fedora9下安装VMtool后图形界面无法启动
- 《硅谷钢铁侠的跨界传奇-埃隆马斯克传》阅读笔记
- 产品经理/技术总监的能力模型
- 滴滴征战澳洲 全球“追击”优步
- android 6.0 vs ios9,安卓6.0彻底看呆!iOS 9安装率曝光 完胜
- Ansys/Abaqus/nbsp;热应力分析.20…
- 用php编写一个同学录,PHP+DBM的同学录程序(2)
- TeachingKids-一款针对2到6岁宝宝的教育类游戏,目前可以让宝宝认知一些基础的水果,并进行简单的测验。