重新开始战斗02-编程之美-烧饼问题

本文详细探讨了烧饼问题,即如何通过最少的翻转次数将n块大小不一的烙饼排序。文章指出这不是设计排序算法,而是寻找自适应的翻转策略。作者介绍了贪心法和深度搜索的思路,通过上界和下界的估计来优化翻转次数,并提供了代码解释。
摘要由CSDN通过智能技术生成

警告:

要看懂本文所讲述的内容,必须建立在仔细阅读原文的基础上。原文有些代码的说明并不是很明确,笔者在本文中,只是针对自己开始不理解的地方经过思考和查阅其他资料后给出了自己的理解。其次,本文没有给出完整代码,完整代码有些长,需要查阅的朋友可以看编程之美1.3节。

原文描述:

假设有n块大小不一的烙饼,那最少要翻几次,才能达到大小有序的结果?

你能否写出一个程序,对于n块大小不一的烙饼,输出最优化的翻饼过程呢?


首先要清楚的是,烧饼问题不是要我们去设计一种排序算法,而是要我们设计一种自适应的,能根据不同的输入从而求得翻转次数最少的排序方式。也就是说,对于不同的输入,翻转烧饼的方法也是不同的,并不是我在数据结构这样的书籍中所看到的一种适通用的排序算法。简而言之,该问题的本质是求一个最小值,即在这样的输入的情况下,翻转的次数最少。其数学模型为:


可以发现,这明显是一个最优化问题。

假设F(n)是我们设计的算法,输入一个烧饼序列n后,输出翻转的最优(最小)次数与翻转策略。

对于最优化问题ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值