烙饼排序(Bounds for Sorting by Prefix Reversal)(上)-编程之美初学者参考文档 1.3

本文探讨了Bill Gates和Christos Papadimitriou在1979年发表的关于烙饼排序的问题,该问题涉及如何通过前缀反转进行排序。文章指出,通过递归和动态规划的方法寻找最优解,但简单的解决方案并不总是有效。作者提示读者注意避免不必要的翻转,并提供了一个C++程序来搜索最优方案,鼓励从后往前阅读以更好地理解内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Gates,W. and Papadimitriou,C. "Bounds for Sorting by Prefix Reversal." Discrete Mathematics.27,47-57,1979.

据说这是Bill Gates发表的唯一学术论文。

 

这个排序问题非常有意思,不同于Hanoi塔问题。首先我们要弄清楚骚操作在于:单手每次抓n块饼,全部颠倒。

例如

-----------1------------

------2------

----3----

翻转后:

----3----

------2------

-----------1------------

基本的排序方法都不太好用。先说一个最简单的解法,如果最底层的饼已经排序,那我们只需要处理n-1个烙饼。这样,我们再简化为n-2,n-3,递归直到最上面的两个饼排好序。这种排序的算法思路大概是这样:

首先,对于每一堆饼,我们找到它里面最大的一张饼,把这张最大的饼与上面的n个饼全部翻转,这样最大的饼就在最上面了,之后我们把整堆再做一次翻转,这样最大的饼也就到了最底部。如图所示(笔者字不好,多多包涵哈哈)

            之后,我们就可以轻松的通过递归将整堆饼排序。

 

这么简单就可以把问题解决吗?用脚丫子想都不可能。

我们注意到一个问题ÿ

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值