public class beibao {public int [][] pack(int m,int n,int w[],int p[]){//c[i][v]表示前i件物品恰放入一个重量为m的背包可以获得的最大价值int c[][]= new int[n+1][m+1];for(int i = 0;i<n+1;i++)c[i][0]=0;for(int j = 0;j<m+1;j++)c[0][j]=0;//for(int i = 1;i<n+1;i++){for(int j = 1;j<m+1;j++){//当物品为i件重量为j时,如果第i件的重量(w[i-1])小于重量j时,c[i][j]为下列两种情况之一://(1)物品i不放入背包中,所以c[i][j]为c[i-1][j]的值//(2)物品i放入背包中,则背包剩余重量为j-w[i-1],所以c[i][j]为c[i-1][j-w[i-1]]的值加上当前物品i的价值if(w[i-1]<=j){if(c[i-1][j]<(c[i-1][j-w[i-1]]+p[i-1]))c[i][j] = c[i-1][j-w[i-1]]+p[i-1];elsec[i][j] = c[i-1][j];}elsec[i][j] = c[i-1][j];}}return c;}/*** 逆推法求出最优解* @param c* @param w* @param m* @param n* @return*/public int[] printPack(int c[][],int w[],int m,int n){int x[] = new int[n];//从最后一个状态记录c[n][m]开始逆推for(int i = n;i>0;i--){//如果c[i][m]大于c[i-1][m],说明c[i][m]这个最优值中包含了w[i-1](注意这里是i-1,因为c数组长度是n+1)if(c[i][m]>c[i-1][m]){x[i-1] = 1;m-=w[i-1];}}for(int j = 0;j<n;j++)System.out.println(x[j]);return x;}public static void main(String args[]){int m = 10;int n = 3;int w[]={3,4,5};int p[]={4,5,6};beibao pack = new beibao();int c[][] = pack.pack(m, n, w, p);pack.printPack(c, w, m,n);}}

01背包java 源码相关推荐

  1. 面试官系统精讲Java源码及大厂真题 - 01 开篇词:为什么学习本专栏

    01 开篇词:为什么学习本专栏 更新时间:2019-10-30 10:08:31 才能一旦让懒惰支配,它就一无可为. --克雷洛夫 不为了源码而读源码,只为了更好的实践 你好,我是文贺,Java 技术 ...

  2. c语言动态规划0-1背包,c++实现0-1背包问题完整源码(动态规划实现)

    #include #define MAX_NUM 5 #define MAX_WEIGHT 10 using namespace std; //动态规划求解 int zero_one_pack(int ...

  3. Java源码详解四:String源码分析--openjdk java 11源码

    文章目录 注释 类的继承 数据的存储 构造函数 charAt函数 equals函数 hashCode函数 indexOf函数 intern函数 本系列是Java详解,专栏地址:Java源码分析 Str ...

  4. Tika结合Tesseract-OCR 实现光学汉字识别(简体、宋体的识别率百分之百)—附Java源码实现及真实测试数据和训练集下载地址...

     OCR(Optical character recognition) -- 光学文字识别,是图像处理的一个重要分支,中文的识别具有一定挑战性,特别是手写体和草书的识别,是重要和热门的科学研究方向.可 ...

  5. java源码pdf_面试官系统精讲Java源码及大厂真题 PDF 下载

    主要内容: 第 1 章 基础 01 开篇词:为什么学习本专栏 不为了源码而读源码,只为了更好的实践 你好,我是文贺,Java 技术专家,DDD 和业务中台的资深实践者,一周面试 2-3 次的面试官. ...

  6. Tika结合Tesseract-OCR 实现光学汉字识别(简体、宋体的识别率百分之百)—附Java源码、测试数据和训练集下载地址...

     OCR(Optical character recognition) -- 光学字符识别,是图像处理的一个重要分支,中文的识别具有一定挑战性,特别是手写体和草书的识别,是重要和热门的科学研究方向.可 ...

  7. Java源码详解六:ConcurrentHashMap源码分析--openjdk java 11源码

    文章目录 注释 类的继承与实现 数据的存储 构造函数 哈希 put get 扩容 本系列是Java详解,专栏地址:Java源码分析 ConcurrentHashMap 官方文档:ConcurrentH ...

  8. Java源码详解五:ArrayList源码分析--openjdk java 11源码

    文章目录 注释 类的继承与实现 构造函数 add操作 扩容函数 remove函数 subList函数 总结 本系列是Java详解,专栏地址:Java源码分析 ArrayList 官方文档:ArrayL ...

  9. Java源码详解三:Hashtable源码分析--openjdk java 11源码

    文章目录 注释 哈希算法与映射 线程安全的实现方法 put 操作 get操作 本系列是Java详解,专栏地址:Java源码分析 Hashtable官方文档:Hashtable (Java Platfo ...

最新文章

  1. 仅用语音,AI就能“脑补”你的脸! | 技术头条
  2. java代码连接数据库
  3. Win7下面安装SQL Server2005
  4. 定义咯一个枚举变量枚举变量怎么打印出来 linux c,以C语言的字符串形式输出枚举变量...
  5. 计算机图形学画线_在计算机图形学中直接使用线方程
  6. 关于12306的一点思考
  7. font-family常见中文字体对应的英文名称
  8. Oracle常用函数
  9. 2021计算机考研408真题和答案(回忆版)
  10. 《kiss the rain》与追求完美的矛盾个体
  11. Flutter 2.0 Null-Safety(空安全)使用和理解
  12. 华为荣耀手表GS3 评测怎么样
  13. 简易PC基准测试丨PerformanceTest功能简介
  14. testlink mysql_windows下testlink环境搭建
  15. 手动查杀skypee病毒(AutoIt3木马)
  16. LTE RACH过程
  17. js两行代码获取ip地址
  18. aps软件诠释精益制造的三个概念
  19. 硬盘寿命检测_如何延长硬盘寿命
  20. (解)金缕衣-杜秋娘

热门文章

  1. 【Visual Studio 2019】上传代码到 GitHub ( 16.9.2 版本 | 安装 GitHub 扩展插件 | 创建 Git 仓库 | 推送到远程仓库 )
  2. 【Android 异步操作】线程池 ( 线程池作用 | 线程池种类 | 线程池工作机制 | 线程池任务调度源码解析 )
  3. 【Android RTMP】音频数据采集编码 ( FAAC 音频编码参数设置 | FAAC 编码器创建 | 获取编码器参数 | 设置 AAC 编码规格 | 设置编码器输入输出参数 )
  4. 【设计模式】装饰者模式 ( 概念 | 适用场景 | 优缺点 | 与继承对比 | 定义流程 | 运行机制 | 案例分析 )
  5. js获取浏览器宽度和高度值
  6. 417 Pacific Atlantic Water Flow 太平洋大西洋水流
  7. Mysql5.7安装错误处理与主从同步及!
  8. Homebrew常用命令
  9. 如何运维能让网站稳定高效--稳定篇
  10. MagicalRecord使用中的注意事项