算法导论:钢条切割(java递归实现)

切割钢管问题用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 ... 阅读详情
import java.util.*;
public class Main{
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n,a;
		n = in.nextInt();
		a = rod(n);
		System.out.print(a);
	}
	public static int rod(int n) {
		int[] price = {1,5,8,9,10,17,17,20,24,30};
		int result;
		if(n==0) 
			return 0;
		result = -999999;
		for(int i=1;i<=n;i++) {
			result = Math.max(result,price[i-1]+rod(n-i));
		}
		return result;
	}
}

【DP1】钢条分割详解 [DP] 原文再续,书接上一回,上一篇文章的背包讲的有点过于狭义了,我就某一类问题解释一种算法的思想:动态规划(Dynamic Programming)。简称DP。 我们在生活中不免会遇到一类问题,求什么什么的最大,什么什么的最小。在这类问题中,如果有算法基础的同学可能会知道贪心算法,但是贪心算法是无法在所有的情况下保证最优解的,而DP是可以的。 那么DP是什么?我们直接用一道题目来举例子去解释DP。 这里采用的例子引用自CLRS中的钢条分割问题。我只做一个概括性复述。有兴趣的同学可以去看看原著* (这里强 阅读详情

相关推荐

JAVA算法:切割木棒—递归算法与动态规划算法

JAVA算法:切割木棒—递归算法与动态规划算法 给定一根长度为N的木棒和一系列价格,其中包含所有小于N的尺寸的价格。通过切割木棒和出售木棒来确定可获得的最大值。 例如,如果木棒的长度为8,不同部分的值如下所示,则可获得的最大值为22(通过切割两段长度2和6) 长度 1 2 3 4 5 6 7 8 价值 1 5 8 9...

梅森上校的博客 业精于勤荒于嬉,形成于思毁于随。 2413

动态规划之钢条切割问题(java)

问题分解:将长度为n的钢条分解为左边一段和剩余部分,左边一段不再进行分割,剩余部分继续分割(子问题相同,递归处理)给定一段长度为n英寸的钢条和一个价格表pi(i=1,2,...n),求切割方案,使得销售收入r()最大。使用path[] 记录分割点位置 while循环输出分割点。复杂度 : 时间复杂度 O(n^2) 空间复杂度O(n)4.3 自顶向下的递归实现。4.2 自底向上迭代实现。4.3 输出切割方案。

厚积薄发的博客 856

动态规划-钢条切割(java)

数据结构与算法系列源代码:https://github.com/ThinerZQ/AllAlgorithmInJava 本文源代码:https://github.com/ThinerZQ/AllAlgorithmInJava/blob/master/src/main/java/com/zq/algorithm/dynamicprogrammin/SteelBar.java如果代码链接失效了,麻烦评

Monet Zheng的查漏补缺 3470

算法导论-动态规划(钢条切割问题)

写下文章来记录下自己学习算法导论的笔记 文章目录写下文章来记录下自己学习算法导论的笔记动态规划的目的设计动态规划算法钢条切割问题问题描述刻画问题结构(建立方程)递归方程建立带备忘录的自顶向下法自底向下的方法如何保留切割方案源代码 动态规划的目的 求出最优子结构 设计动态规划算法 1.刻画一个最优解的结构特征 2.递归定义最优解的值 3.计算最优解的值 4.利用计算出的信息构造一个最优解 钢条切割问题 问题描述 ​ Serling公司购买长钢条,将其切割为短钢条出售。切割工序本身没有成本支出。公司管理层希.

fff1412的博客 2703

Python 算法入门教程:动态规划之钢条切割问题

钢条切割问题,主要讲解了什么是钢条切割问题,如何利用动态规划算法解决钢条切割问题,给出了钢条切割问题的实现伪代码并进行分析,并用 Java 语言进行了伪代码实现,帮助大家通过钢条切割问题更好的理解动态规划算法思想的应用。我们来考虑现实生活中的一个实际应用场景,某个钢材公司购买长钢条,将其切割为短钢条出售,其中切割过程本身不考虑成本,公司管理层想知道最赚钱的钢材切割方案。

win19970108018的博客 754

钢条切割问题 - Java实现(递归,备忘录递归,动态规划)

因为这个问题比较简单,就不给详细解答,直接贴代码了 public class RodCut { public static void main(String[] args) { int [] price = {0,1,5, 8,9,10,17,17,20,24,30,34,38,43,47,50,57,62,63,64,65,66,67,68,69,70, 71, 82}; final int num = price.length - 1; int[]

JunyuLee的博客 520

算法导论中的钢条切割问题

问题描述:   公司购买长钢条,将其切割为短钢条进行出售,切割工序本身没有成本支出,公式管理层希望知道最佳的切割方案。假定我们知道公司出售一段长为i英寸的钢条价格为pi;钢条的长度均为整英寸。给定一段长度为n英寸的钢条和一个价格表pi,求切割钢条方案,使得销售收益最大。如果长度为n英寸的钢条的价格足够大,最优解可能就是完全不用切割。 长度:1, 2, 3, 4, 5, 6, 7, 8, 9,10 ...

覃会程的博客 1375

动态规划-钢条切割

动态规划 简介 目的:求解最优解问题; 思想:组合子问题的解来求解原问题; 一. 可以解决哪些问题: 1. 问题的目标是求解一个问题的最优解; 2. 整体问题的最优解依赖于各个子问题的最优解; 3. 大问题分解成若干小问题,且这些小问题还可能继续分解为若干更小的问题; 4. 从上向下分析问题,从下向上解决问题。 二. 设计动态规划的方法: 刻画一个最优解结构特征: 即要求满足题目要求的解的特征;...

nuist_Jiang的博客 1452

《算法导论》第15章动态规划钢条切割问题Java实现

算法导论中讲解动态规划的一个很经典的例子,详细分析了朴素的递归、自顶向下动态规划的递归和自底向上的非递归动态规划,这三种思路之间的区别,并重构解。 联系第22章: 自顶向下动态规划的递归:就是子问题图的深度优先搜索 自底向上的非递归动态规划:就是子问题图的逆拓扑排序 代码实现: import java.util.ArrayList; import java.util.Arrays; i...

locallucky的博客 654

动态规划之钢条切割

《算法导论》老师布置的作业,解决钢条切割问题: 附上代码: package com.crazymonkey; import java.awt.Color; import java.util.ArrayList; import javax.swing.JOptionPane; /** * 算法导论第15章之钢条切割 * @author CrazyMonkey * @since 2013

离名 1065

(35)远程识别(又称无人机识别)(一)

Ardupilot官网关于《Peripheral Hardware》的翻译 —《(35) 远程识别(又称无人机识别)》。

无人机开发(开源Ardupilot) 4万+

钢条切割(java)

问题描述: Serling公司购买长钢条,将其切割为短钢条出售。切割工序本身没有成本支出。公司管理层希望知道最佳的切割方案。假定我们知道Serling公司出售一段长为i英寸的钢条的价格为pi(i=1,2,…,单位为美元)。钢条的长度均为整英寸。 | 长度i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | | - | - | - | - | - | - | - ...

lianggege88的博客 680

Palantir解密:说人话,到底什么是“本体”?

笔者2018年在云计算公司开展政企数字化专项时,便意识到全面数字化进程背后存在大量未知领域,尤其是未来数字世界的底层架构如何构建这一关键问题。可惜因为种种原因,连那几个小专项最终都未能落地,也就无从深入了。近期看了很多有关Palantir的材料,倒觉得这像是新硅谷(区别于比尔盖茨、扎克伯格等主导的硅谷时代)交出的一份关于“数字世界底层架构”的答案,至于这个答案是否成立、有没有更优解、我们本土对标的版本是什么,可能都还待看。《Palantir解密》系列尝试通过解析Palantir,来系统回答这一问题。

SZSDQJC的博客 2153

递归实现钢条切割问题(Java版)

钢条切割问题递归有两种思想: 1.切割一刀分别获取两两边的最优解相加,获取两两相加的最优解和不切割的比较这样就可以得出可以分割的最大价值。 公式:r(n)=max(p[n] , r(1)+r(n-1) , r(2)+r(n-2) ,……,r(n-1)+r1) public static int cut(int[] p, int value) { if (value == 0) { return 0; } else { i

W2044377578的博客 642

用Java实现森林冰火人游戏

g.drawString("游戏结束", CELL_SIZE * COLS / 2 - 100, CELL_SIZE * ROWS / 2);g.drawString("难度级别: " + difficultyLevel, 10, CELL_SIZE * ROWS + 60);g.drawString("生命值: " + playerHealth, 10, CELL_SIZE * ROWS + 20);setTitle("森林冰火人");

2401_82778412的博客 1734

Zynq 【SDK裸机开发之PS】——DDR的内存分配使用详解

Zynq如果跑操作系统的话,内存管理的工作都会交给系统来操作,但是如果是裸机的话,则需要自己对DDR3的内存进行管理。

shizhibuyi1234的博客 7376

钢条切割(动态规划问题)

动态规划 动态规划与分治方法相似都是通过组合子问题的解来求解原问题 动态规划通常用来求解最优化问题,这样的问题可以有很多个可行解,每一个解都有一个值,我们希望寻找具有最右值(最大值 或者 最小值)的解, 最优值有一个,但是最优解可能有多个; 通常按如下四个步骤设计一个动态规划算法 1、刻划一个最优解的结构特征 2、递归地定义最优解的值 3、计算最优解的值,通常采用自底向上方法 4、利用计算出的信息...

weixin_44016068的博客 1790

使用BK3432芯片进行蓝牙开发的详细指南:编程手册与实际应用

BK3432是一款蓝牙4.2双模式芯片,支持蓝牙低功耗(BLE)和经典蓝牙(BR/EDR)模式。它集成了高性能的RF收发器、基带处理器、ARM9E内核、丰富的功能外设单元,并支持BLE应用的可编程协议和概要文件。蓝牙版本:4.2数据速率:最高支持2Mbps内核:ARM9ERF收发器:高性能、低功耗外设单元:包括UART、SPI、I2C、GPIO等功耗:超低功耗设计,适合电池供电的应用。

m0_57781768的博客 4446

动态规划,java实现算法导论15章钢条切割

来自浙江理工大学在读研究生Yuner: github地址 个人博客地址 此问题dp式 :rn = max(pi + r(n-1)) 不使用dp,用普通的递归方式来求解 //使用普通的方法来计算钢条切割的最优切割方案 public class Steelbarcutting1 { private int[] price; Steelbarcutting1() { price = new int[]{1,5,8,9,10,17,17,20,24,30}; }

nishuiaee的博客 354

【计算机图形学】Pov-Ray画的垃圾小车

效果: 代码: #include "colors.inc" #include "metals.inc" #include "glass.inc" //相机 //这个位置车子刚好落在草地上了 camera { location direction z*1.5 right x*image_width/image_height look_at

lishichengyan的博客 1749

PCL点云库入门(第6讲)——PCL库中Eigen数学工具库的基本使用(持续更新)

Eigen库是一个高性能的C++模板库,专注于线性代数、矩阵和向量运算,以及相关的数值分析和算法。在Eigen库中,所有的矩阵和向量均被视为矩阵模板类的实例。向量可以被看作是特殊形式的矩阵,具体表现为只包含1行或1列。

qq_36812406的博客 1752

算法:动态规划(1.钢条切割)

Dynamic programming 动态规划,与分治法相似,都是通过组合字问题的解来求解原问题,但动态规划是应用于子问题重叠的场景,每个子问题都只求一遍,将解存入表格中,避免不必要的重复工作。 问题:购买长钢条,将其切割为短钢条出售,切割 ...

齐天的博客 1838

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

动态规划(二)--钢条切割

问题描述:一家公司购买长钢条,将其切割成短钢条出售,切割本身没有成本,长度为i的短钢条的价格为Pi。那给定一段长度为n的钢条和一个价格表Pi,求钢条的切割方案使得收益Rn最大。如一个Pi如下: 长度i 1 2 3 4 5 6 7 8 9 10 价格Pi 1 5 8 9 10 17 17 20 24 30 在距离钢

阿Biang的BLOG 2262

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

动态规划——钢条切割java

【问题】:给定一段长度为n英寸的钢条和一个价格表pi(i = 1,2,3…n)求切割方案使得销售受益rn最大。 例如 n = 4 切割方案以及对应的收益为: 【用自顶向下的递归】 //CUT-ROD(p,n) if n == 0 return 0 q = -无穷 for i = 1 to n q = max(q,p[i]+CUT-ROD(p,n-i)) retur...

weixin_39795049的博客 1066

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: 算法导论:堆排序(java实现)
下一篇: 算法导论:钢条切割(java动态规划实现)
fun_always
博客等级 码龄9年 39粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值