JAVA代码—算法基础:切割钢锯条售卖的问题

本文探讨了一个经典的动态规划问题——钢锯条切割售卖。通过分析局部最优解,得出长度为n的钢条最大收益的计算方法。通过递归和动态规划两种方式求解,展示了如何在不同长度的钢条上找到最佳切割方案,以实现最大收益。
摘要由CSDN通过智能技术生成
切割钢锯条售卖

题目描述:给定一段长度为n英寸的钢条和一个价格表,求切割方案,使销售收益Rn最大。
注:若长度为n英寸的钢条的价格Pn足够大,最优解可能就是完全不需要切割。

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

给定一个长度为n的钢条,该钢条经过有效切割,最多能卖出多少钱?

题目分析

在最初分析本题局部最优解的时候,陷入了误区,一直在考虑局部最优解是以分割1、2、3……段来达到最后结果,后来发现这样分析走入了误区。
本题的局部最优解:长度为i的钢条最多可卖多少钱ri
长度为n的钢条的最大收益:

情况1:不切割,一整条出售的价格pn;
情况2:将钢条分割成长度 i 和 j 两段的最大收益,ri+rj;

以长度为 4 举例:

分割锯条的收益表

从上述图中的分析可以看到方案C收益最大,即长度为4的锯条分成两段,每段的长度为2,收益是最大的(收益为10)。

长度为n英寸的钢条共有2^(n-1)种不同切割方案,因为在距离钢条左端 i (i=1, 2, … , n-1)英寸处,总是可以选择切割或者不切割。用普通的加法符号表示切割方案,因此7=2+2+3表示将长度为7的钢条切割为3段:2英寸,2英寸,3英寸。

若一个最优解将钢条切割为k段(1≤k≤n),那么最优切割方案 n = i1 + i2 + … + ik.

将钢条切割为长度分别为i1, i2, … , ik的小段,得到的最大收益为 Rn = Pi1 + Pi2+…+Pik

对于上面表格的价格样例,可以观察所有最优收益值Ri (i: 1~10)以及最优方案:

长度为1:切割方案1=1(无切割)。最大收益R1 = 1

长度为2:切割方案2=2(收益5),1+1=2(收益2)。最大收益R2 = 5

长度为3:切割方案3=3(收益8),1+2=3(收益6),2+1=3(收益6)。最大收益8

长度为4:切割方案4=4(收益9),1+3=4(收益9),2+2=4(收益10),3+1=4(收益9),1+1+2=4(收益7),1+2+1=4(收益7),2+1+1=4(收益7),1+1+1+1=4(收益4)。最大收益10

长度为5:切割方案5=5(10),1+4=5(10),2+3=5(13),1+1+3=5(10),2+2+1=5(11),1+1+1+1+1=5(5),其他是前面的排列。最大收益13

依次求出。。。

更一般的,对于Rn(n≥1),可以用更短的钢条的最优切割收益来描述它:

Rn = max(Pn, R1+Rn-1, R2 + Rn-2, … , Rn-1 + R1)

第一个参数Pn对应不切割࿰

好的,以下是一个简单的 HTML 网页设计,用于推荐电影《血战钢锯岭》: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>血战钢锯岭 - 电影推荐</title> </head> <body> <h1>血战钢锯岭 - 电影推荐</h1> <img src="https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2497707907.webp" alt="血战钢锯岭 海报"> <h2>剧情简介</h2> <p>影片讲述二战期间,美军一名年轻的医疗兵战争中幸存下来,成为美国历史上最杰出的英雄之一。他不仅在战场上拯救了75名战友,还为美国军队的种族平等事业做出了重要贡献。</p> <h2>演员表</h2> <ul> <li>安德鲁·加菲尔德 - 饰演戴斯蒙德·道斯</li> <li>塞缪尔·杰克逊 - 饰演佛罗伊德·泰勒</li> <li>文斯·沃恩 - 饰演塔尔</li> <li>雨果·维文 - 饰演卡波尼</li> </ul> <h2>影评</h2> <p>"血战钢锯岭"是一部非常出色的战争电影,它不仅展现了战争的残酷和人性的无助,更重要的是给我们展示了一个普通人的英雄主义,让我们明白了什么才是真正的勇气和荣誉。</p> <h2>影片信息</h2> <ul> <li>导演:梅尔·吉布森</li> <li>主演:安德鲁·加菲尔德、塞缪尔·杰克逊、文斯·沃恩</li> <li>类型:剧情、历史、战争</li> <li>制片国家/地区:美国</li> <li>语言:英语</li> <li>上映时间:2016年11月4日</li> </ul> </body> </html> ``` 以上代码会产生一个简单的 HTML 网页,包含电影《血战钢锯岭》的海报、剧情简介、演员表、影评和影片信息等内容。你可以根据自己的需求进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值