回 帖 发 新 帖 刷新版面

主题:《编程之美——微软技术面试心得》电子书下载“一撂烙饼的排序问题”

[size=4][color=FF00FF]公布答案了,有电子书下载

本题名为 “一撂烙饼的排序问题”,是[url=http://www.china-pub.com/38070]《编程之美——微软技术面试心得》[/url]中的一道比较经典的题目。

这个排序问题很有意思,解决问题的关键操作是——“单手每次抓几块饼,全部颠倒”。

每次我们只能选择最上方的一堆饼,一起翻转。而不能一张张地直接抽出来,然后进行插入,也不能交换任意两块饼子。这说明基本的排序办法都不太好用。那么怎么把这n个烙饼排好序呢?

[url=http://www.china-pub.com/38070]《编程之美——微软技术面试心得》[/url]中给出了具体的解法以及最优的方案,见电子书。书中还提到比尔盖茨在上大学的时候也研究过这个问题,并且发表过论文。大家有没有兴趣知道盖茨研究这个题目的结果是怎样的呢?

电子书中还附有看了[url=http://www.china-pub.com/38070]《编程之美》[/url]后面试微软的小故事 :),大家快来下载吧。。。[/color][/size]


《编程之美——微软技术面试心得》 中的一道题,作者是微软研发经理,主持过多次招聘。大家看看这道题怎么解? 据说有很多种解法:)这里:[url]http://yishan.cc/forums/thread/711.aspx[/url]  

星期五的晚上,一帮微软技术员在希格玛附近的“硬盘酒吧”多喝了几杯。程序员多喝了几杯之后谈什么呢?自然是算法问题。有个同事说:   我以前在烙饼店打工,顾客经常端非常多的烙饼。店里的饼大小不一,我习惯在到达顾客饭桌前,把一摞饼按照
大小次序摆好——小的在上面,大的在下面。由于我一只手托着盘子,只好用另一只手,一次抓住最上面的几块饼,把它们上下颠倒个个儿,反复几次之后,这摞烙饼就排好序了。   
这实际上是个有趣的问题:假设有n块大小不一的烙饼,那最多/最少要翻几次,才能达到最后大小有序的结果呢?   
话音刚落,吧台的酒保就开腔了:这太难了吧。我有个简单的问题。有一次我烙了三个饼,一个两面都焦了,一个两面都是金黄色,一个一面是焦的,一面是金黄色,我把它们摞一起,只能看到最上面一个饼的一面,发现是焦的,问最上面这个饼的另一面是焦的概率是多少?   
不少喝酒的人脱口而出:1/2!   
上面的说法对吗?你能否写出一个程序,对于n块大小不一的烙饼,输出最优化的翻饼过程呢[url=http://www.china-pub.com/38070]《编程之美——微软技术面试心得》[/url][url=http://www.china-pub.com/38070]《编程之美——微软技术面试心得》[/url][url=http://www.china-pub.com/38070]《编程之美》[/url]

回复列表 (共5个回复)

沙发

Maximum : 2*(n-2) + 1 

O(n)

板凳

转贴一个答案:

这个问题其实就是一个数据结构中的排序问题 
最少当然是0次(烙饼本来就是从大到小排好的) 
最多应该是插入排序最坏情况下的次数 好像是N平方次  

最优的话 应该用快速排序算法 算是最好的了 

不知道对不对

3 楼

[quote]转贴一个答案:

这个问题其实就是一个数据结构中的排序问题 
最少当然是0次(烙饼本来就是从大到小排好的) 
最多应该是插入排序最坏情况下的次数 好像是N平方次  

最优的话 应该用快速排序算法 算是最好的了 

不知道对不对[/quote]

wrong! Wrong! WRONG!!!!

You don't need to do any comparison, since you can see which 烙饼 is bigger!!!

You don't need any 排序算法!

My maybe not so optimized algorithm is to make the beggest to the top, then turn all 烙饼s  upside down, then do the same for n-1 烙饼s. That is why the worst case is 

Maximum : 2*(n-2) + 1 

O(n)



4 楼

justforfun626的算法启发了我,最糟的情况下,大部分饼要翻两次,所以Maximum : 2*(n-2) + 1最前面的2是对的;如果有2个饼,最多要翻1次,也是对的。但如何有1个饼,那肯定不用翻,2*(1-2)+1=-1显然这时公式是错的。justformfun626能不能再看看。我想可能有动态规划的解法。最多翻的次数更少。
另外我觉得那个保安的问题,2分之1是对的,因为上面是焦的,所以不可能是两面是黄的那个。于是剩下的两个都有可能,所以我的答案也是2分之1。但奇怪的是这似乎跟原题没什么关系。是不是插曲啊?

5 楼

电子书下载中~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册