推出公式:


第三个就是:让上一次的和(新加入商品容量+(总空间-新加入的商品容量)也就是剩余空间的最大值,剩余空间的最大值去上一层找)

package Algorithm.dac.knapsack;public class KnapsackProblem {public static void main(String []args){int [] weight = {1, 4, 3};//物品的重量int [] value = {1500, 3000, 2000};//物品的价值int m = 4; //背包容量int n = value.length; //物品的个数//创建二维数组//v[i][j]表示在前i个物品中能够装入容量为j的背包中的最大价值int [] [] v = new int[n+1][m+1];int [] [] path = new int[n+1][m+1];//初始化第一行和第一列,这里可以不处理,默认就是0for (int i = 0; i < v.length; i++) {v[i][0] = 0; //第一列设置为 0}for (int i = 0; i < v[0].length; i++) {v[0][i] = 0;//将第一行设置为 0}//根据公式来动态规划处理for (int i = 1; i < v.length; i++) {for (int j = 1; j < v[0].length; j++) {if (weight[i -1] > j){v[i][j] = v[i-1][j];}else {//v[i][j] = Math.max(v[i-1][j], value[i-1] + v[i-1][j-weight[i-1]]);if (v[i-1][j] < value[i-1] + v[i-1][j-weight[i-1]]){v[i][j] = value[i-1] + v[i-1][j-weight[i-1]];path[i][j] = 1;}else {v[i][j] = v[i-1][j];}}}}//输出一下vfor (int i = 0; i < v.length; i++) {for (int j = 0; j < v[0].length; j++) {System.out.print(v[i][j]+" ");}System.out.println();}System.out.println("===========");int i = path.length - 1;int j = path[0].length - 1;//v[i][j] = value[i-1] + v[i-1][j-weight[i-1]];//如果是1那么,v[i][j] = value[i-1] + v[i-1][j-weight[i-1]];  就是 物品value[i-1] + v[i-1][j-weight[i-1]],在判断v[i-1][j-weight[i-1]]是1还是0,是1继续循环,是0就退出。while (i > 0 && j > 0){if (path[i][j] == 1) {System.out.println("物品:" + i + "加入背包");j = j - weight[i - 1];}i = i - 1;}}
}

算法 - 动态规划(0-1背包问题)相关推荐

  1. 动态规划——0/1背包问题(全网最细+图文解析)

    ✨动态规划--0/1背包问题(全网最细+图文解析) 作者介绍:

  2. 动态规划0—1背包问题

    动态规划0-1背包问题 Ø    问题描写叙述:    给定n种物品和一背包.物品i的重量是wi,其价值为vi,背包的容量为C.问应怎样选择装入背包的物品,使得装 入背包中物品的总价值最大? Ø   ...

  3. 计算机算法的发展动态,计算机算法动态规划讲解.ppt

    计算机算法动态规划讲解 * 0-1背包问题 设所给0-1背包问题的子问题 的最优值为m(i,j),即m(i,j)是背包容量为j,可选择物品为i,i+1,-,n时0-1背包问题的最优值.由0-1背包问题 ...

  4. 背包问题动态规划matlab,01背包问题动态规划详解

    计算机算法分析考试:动态规划0-1背包问题,怎么算她说她没醉,却一直摇摇晃晃掉眼泪:你说你爱她,却从未想过给她一个家. 要考试了,老师给划重点有一题:动态规划0-1背包问题,怎么算. 怎么理问题描述: ...

  5. 算法导论——动态规划:0-1背包问题(完全解)

    2019独角兽企业重金招聘Python工程师标准>>> package org.loda.dynamic;import org.junit.Test;/*** * @ClassNam ...

  6. 算法设计与分析实验二:动态规划法实现TSP问题和0/1背包问题

    [实验目的] 1.熟练掌握动态规划思想及教材中相关经典算法. 2.使用动态规划法编程,求解0/1背包问题和TSP问题. TSP问题 一.实验内容: TSP问题是指旅行家要旅行n个城市,要求每个城市经历 ...

  7. Java使用动态规划算法思想解决01背包问题

    Java使用动态规划算法思想解决背包问题 背包问题是一种组合优化的NP完全问题.问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高 动 ...

  8. 0/1背包问题——动态规划、回溯、分支限界法对比

    0/1背包问题--动态规划.回溯.分支限界法对比 2017.12.19 20:42:02 字数 3713 阅读 2820 目录 1.问题描述 1.1 问题描述 1.2 问题的数学表示(规划类问题,此种 ...

  9. 动态规划之0/1背包问题(动态规划入门)

    动态规划很早以前就接触过但是因为太晦涩难懂一下子到现在才开始真正的学习到其中的道理,0/1背包问题是动态规划的入门类问题 比较好理解 首先我们要知道动态规划是用于解决最优解的问题 它是一种思想而不是一 ...

  10. 0/1背包问题——动态规划方法

    1.定义 动态规划:把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解. 2.求解步骤 (1)找到状态转化条件 (2)归纳状态转移方程 (3)定义初始条件值 3.实例解析--0/1背包 ...

最新文章

  1. mysql安装好需要优化配置一下_Mysql的安装、配置、优化
  2. 行为模式之Mediator模式
  3. 【集训心得】在真哥强迫下不得不写的总结
  4. 只会linux和sql能维护mes系统么,MES系统软件架构介绍
  5. matplotlib  plt.scatter
  6. 冯珊珊_模拟器企业衡泰信签约冯珊珊,推动高尔夫运动下沉
  7. MySQL 创建触发器
  8. 特斯拉接连出闹剧?一次比一次渗人...
  9. oracle 01035,oracle常用命令(一)
  10. as android.mk 变色,FFmpeg4Android:AS中使用NDK
  11. 在MAC上.sh command not found?
  12. PHPStorm更换主题,调整背景和字体颜色
  13. linux命令行下如何播放视频,linux播放视频命令
  14. 有监督学习、无监督学习和半监督学习的分类
  15. openGL细分着色器详解
  16. 如何用计算机计算以2为底的对数,log以2为底3的对数计算器怎么写
  17. 解决笔记本同时连接局域网和外网网络后上网很卡的问题
  18. 千人千面算法java实现_推荐算法-recommend_system
  19. tolower c语言,C语言 tolower()用法及代码示例
  20. 木子-数据库-sqlServer数据库安装方式

热门文章

  1. 统计学中【矩】的概念
  2. windows下memcache的安装总结
  3. 22套精美的网页按钮图标设计推荐(包括PSD和AI文件)
  4. “启动Word时提示出错,只能用安全模式才能打开”的解决方法
  5. 在.net 2.0 中执行分布式事务:隐式事务篇(SQL Server 与 Oracle)
  6. fir滤波器算法c语言程序,FIR滤波器设计C语言程序
  7. html5同心圆代码,HTML5/Canvas 鼠标跟随的同心圆
  8. linux ubantu扩展空间,ubuntu 扩展存储空间
  9. 798B. Mike and strings
  10. php模板初级教程,风格模板初级不完全修改教程