切割钢管问题用java循环解决过程
- 题目:为下列问题设计一个动态规划算法。已知一个小木棍的销售价格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循环解决过程相关推荐
- java鸡兔同笼用循环_Java使用for循环解决经典的鸡兔同笼问题示例
Java使用for循环解决经典的鸡兔同笼问题示例 发布时间:2020-10-04 06:06:05 来源:脚本之家 阅读:138 作者:yzccc 本文实例讲述了Java使用for循环解决经典的鸡兔同 ...
- JDK下载、安装、运行第一个Java程序的过程以及javac不是内部或外部命令的解决办法
JDK下载.安装.运行第一个Java程序的过程以及javac不是内部或外部命令的解决办法 1.下载和安装JDK开发环境 下载地址:https://www.oracle.com/technetwork/ ...
- 网页java挂挖矿_记一次服务器被植入挖矿脚本的解决过程
记一次服务器被植入挖矿脚本的解决过程 删除挖矿脚本和对应的进程 找出并删除对应挖矿脚本文件 找出进程pid,并且kill掉 无法kill掉的是原进程的守护进程,原进程不在它也会自动关闭,所以不用管它 ...
- 【基础算法】切割钢管与动态规划
尽管排序算法还有很多没有说,但因为这篇文章是已经现成有的,就先上这个,回头再把排序补一下. 好的开始~BigMoyan有一个好基友叫zou先生,zou先生除了是BigMoyan在学校的社团老大外,还是 ...
- 【基础】java 循环语句
Java循环语句之 while 生活中,有些时候为了完成任务,需要重复的进行某些动作.如参加 10000 米长跑,需要绕 400 米的赛道反复的跑 25 圈.在 Java 中实现功能时,也经常需要重复 ...
- 生产环境GC故障解决过程记录
2019独角兽企业重金招聘Python工程师标准>>> 排查了五六个小时,终于解决了GC的问题,记录一下希望可以帮到有需要的人,本文假定读者对GC知识有一定的了解 如果不了解可以先参 ...
- jenkins内存溢出的一些解决过程
公司内网测试jenkins服务器,最近总是出现PermGen space(内存溢出)的问题,解决过程记录如下 1.重启jenkins查看日志: 3, 2017 10:54:54 udson.Exten ...
- 53.垃圾回收算法的实现原理、启动Java垃圾回收、Java垃圾回收过程、垃圾回收中实例的终结、对象什么时候符合垃圾回收的条件、GC Scope 示例程序、GC OutOfMemoryError的示例
53.垃圾回收算法的实现原理 53.1.目录 53.2.启动Java垃圾回收 53.3.Java垃圾回收过程 53.4.垃圾回收中实例的终结 53.5.对象什么时候符合垃圾回收的条件? 53.5.1. ...
- java 循环结构和常用的类 总结笔记
这里主要总结:Number 类.Character 类.String 类.StringBuffer 和 StringBuilder 类 java循环结构比较简单,这里只总结Java 增强 for 循环 ...
最新文章
- 14.理解copy_if算法的正确实现
- json数组格式问题
- eclipemaven本地仓库依赖_只用一招,让你Maven依赖下载速度快如闪电
- VScode+远程服务器docker+C/C++ 代码挑战配置
- rpm包安装失败的解决办法
- 登录emc磁阵提示java版本低_安装完打开 eclipse 提示 JVM 版本较低
- 微信小程序,电子商城中快速实现收货地址(包含前端和后台实现)
- GCode_interpreter解读
- Mega网盘来下载外国友人分享的资源
- h3c 抓包么 能通过debug_华三路由器可以抓包吗 路由器密码
- 情缘难舍 愿为一叶扁舟
- 最新款iPad,真香!!
- 树莓派摄像头无法识别 mmal
- Caffe源码解析(一) —— caffe.proto
- P4学习笔记(一)初识P4
- Java WebMail
- vue里面的model
- 什么是redis?redis如何使用?
- 39岁阿里P9失业了,总资产1.5亿...
- 深圳正规的现货白银交易平台