• 题目:为下列问题设计一个动态规划算法。已知一个小木棍的销售价格pi和长度i相关,i=1.,2,3,..........n,如何把长度为n的木棍切割为若干根长度为整数的小木棍,使得能获得的销售额最大?

假设i和pi的关系如下

i(长度) 1 2 3 4 5 6 7 8 9 10
pi(价格) 1 5 8 9 10 17 17 20 24 30

i长度的木棍能获得的最大收益 要么是它本身的销售价格   要么是能组成它长度的最大收益之和   

F[i]=max(F[i],F[j]+F[i-j])int[] p={0,1,5,8,9,10,17,17,20,24,30};int[] F={0,1,5,8,9,10,17,17,20,24,30};         //用F数组表示最大价值 ,暂时用原来长度价值表示,如果没有也可以用0表示for(int i=2;i<=10;i++)for(int j=1;j<=(i/2+1);j++)          F[i]=max(F[i],F[j]+F[i-j]);       //这里是关键       i长度的木棍能获得的最大收益 要么是它本身 要么是能组成它长度的最大收益之和     另外F[j]和F[i-j]有重合  所以j循环用(i/2+1)减少循环次数System.out.println(F[9]);  for(int i=2;i<=10;i++) {System.out.println("长度为"+i+"最好收益为"+F[i]);         //这里显示最好收益是多少for(int j=1;j<=(i/2+1);j++) {if(F[i]==p[i]){ System.out.println("最好方案为自身");break;}              //如果是自身则与p数组相同else if(F[i]==F[j]+F[i-j]){System.out.println("最好方案为"+j+"加"+(i-j));break;}        //如果是某一个组合 则能显示出来}}

这是运行结果,

25
长度为2最好收益为5
最好方案为自身
长度为3最好收益为8
最好方案为自身
长度为4最好收益为10
最好方案为2加2
长度为5最好收益为13
最好方案为2加3
长度为6最好收益为17
最好方案为自身
长度为7最好收益为18
最好方案为1加6
长度为8最好收益为22
最好方案为2加6
长度为9最好收益为25
最好方案为3加6
长度为10最好收益为30
最好方案为自身

max 函数

public static int max(int a,int b) {if(a>=b)return a;else return b;}

切割钢管问题用java循环解决过程相关推荐

  1. java鸡兔同笼用循环_Java使用for循环解决经典的鸡兔同笼问题示例

    Java使用for循环解决经典的鸡兔同笼问题示例 发布时间:2020-10-04 06:06:05 来源:脚本之家 阅读:138 作者:yzccc 本文实例讲述了Java使用for循环解决经典的鸡兔同 ...

  2. JDK下载、安装、运行第一个Java程序的过程以及javac不是内部或外部命令的解决办法

    JDK下载.安装.运行第一个Java程序的过程以及javac不是内部或外部命令的解决办法 1.下载和安装JDK开发环境 下载地址:https://www.oracle.com/technetwork/ ...

  3. 网页java挂挖矿_记一次服务器被植入挖矿脚本的解决过程

    记一次服务器被植入挖矿脚本的解决过程 删除挖矿脚本和对应的进程 找出并删除对应挖矿脚本文件 找出进程pid,并且kill掉 无法kill掉的是原进程的守护进程,原进程不在它也会自动关闭,所以不用管它 ...

  4. 【基础算法】切割钢管与动态规划

    尽管排序算法还有很多没有说,但因为这篇文章是已经现成有的,就先上这个,回头再把排序补一下. 好的开始~BigMoyan有一个好基友叫zou先生,zou先生除了是BigMoyan在学校的社团老大外,还是 ...

  5. 【基础】java 循环语句

    Java循环语句之 while 生活中,有些时候为了完成任务,需要重复的进行某些动作.如参加 10000 米长跑,需要绕 400 米的赛道反复的跑 25 圈.在 Java 中实现功能时,也经常需要重复 ...

  6. 生产环境GC故障解决过程记录

    2019独角兽企业重金招聘Python工程师标准>>> 排查了五六个小时,终于解决了GC的问题,记录一下希望可以帮到有需要的人,本文假定读者对GC知识有一定的了解 如果不了解可以先参 ...

  7. jenkins内存溢出的一些解决过程

    公司内网测试jenkins服务器,最近总是出现PermGen space(内存溢出)的问题,解决过程记录如下 1.重启jenkins查看日志: 3, 2017 10:54:54 udson.Exten ...

  8. 53.垃圾回收算法的实现原理、启动Java垃圾回收、Java垃圾回收过程、垃圾回收中实例的终结、对象什么时候符合垃圾回收的条件、GC Scope 示例程序、GC OutOfMemoryError的示例

    53.垃圾回收算法的实现原理 53.1.目录 53.2.启动Java垃圾回收 53.3.Java垃圾回收过程 53.4.垃圾回收中实例的终结 53.5.对象什么时候符合垃圾回收的条件? 53.5.1. ...

  9. java 循环结构和常用的类 总结笔记

    这里主要总结:Number 类.Character 类.String 类.StringBuffer 和 StringBuilder 类 java循环结构比较简单,这里只总结Java 增强 for 循环 ...

最新文章

  1. 14.理解copy_if算法的正确实现
  2. json数组格式问题
  3. eclipemaven本地仓库依赖_只用一招,让你Maven依赖下载速度快如闪电
  4. VScode+远程服务器docker+C/C++ 代码挑战配置
  5. rpm包安装失败的解决办法
  6. 登录emc磁阵提示java版本低_安装完打开 eclipse 提示 JVM 版本较低
  7. 微信小程序,电子商城中快速实现收货地址(包含前端和后台实现)
  8. GCode_interpreter解读
  9. Mega网盘来下载外国友人分享的资源
  10. h3c 抓包么 能通过debug_华三路由器可以抓包吗 路由器密码
  11. 情缘难舍 愿为一叶扁舟
  12. 最新款iPad,真香!!
  13. 树莓派摄像头无法识别 mmal
  14. Caffe源码解析(一) —— caffe.proto
  15. P4学习笔记(一)初识P4
  16. Java WebMail
  17. vue里面的model
  18. 什么是redis?redis如何使用?
  19. 39岁阿里P9失业了,总资产1.5亿...
  20. 深圳正规的现货白银交易平台

热门文章

  1. 高校实验室信息化管理平台——理化生实验室应用建设
  2. 大白菜装机教程win10_关于联想扬天B41-30-NTZ(L)使用U盘重装Win10系统的详细步骤
  3. Shiro中的Realms
  4. FCoE模块设计与实现
  5. Cleave.js – 自动格式化表单输入框的文本内容
  6. 【软件质量与软件测试 软件可靠性度量和测试】
  7. cocos-lua中播放音乐音效
  8. IntelliJ IDEA配置JDK
  9. 由滑杆和钢珠组成的轴承做转轴的离心式喷气式发动机飞机
  10. android端 edge内核,乔北峰:安卓版Edge已是基于Chromium构建