例题1 分金条问题
你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费?
例题2 过桥问题
现在小明一家过一座桥,过桥时候是黑夜,所以必须有手电筒。现在小明过桥要1秒,小明的弟弟要3秒,小明的爸爸要6秒,小明的妈妈要8秒,小明的爷爷要12秒。每次此桥最多可过两人,而过桥的速度依过桥最慢者而定,为了省电,要求手电筒尽可能打开最少的时间,因为过了桥还有漫长的漆黑道路。问小明一家如何过桥?
例题3 烧香问题
有两根不均匀分布的香,香烧完的时间是一个小时,你能用什么方法来确定一段15分钟的时间? 假如你有多跟绳子,如何确定1小时15分钟的时间?
例题4 倒水问题
假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。(这类题的变异种类不计其数).
变形:一个7升,一个11升,如何取得2升水?
例题5 扔鸡蛋问题
问题:你在一幢100层高的大楼中,给了你两个鸡蛋。鸡蛋有时非常易碎,有时又异常坚韧。这意味着,如果在第1层扔下鸡蛋,鸡蛋或许会碎裂,而如果是从第100层扔下鸡蛋,鸡蛋或许安然无恙。这两只鸡蛋一模一样。你需要计算出,最高从哪层楼扔下时,鸡蛋不会碎。问题是,你最少需要扔多少次鸡蛋才能算出该楼层。整个过程中,你只允许打碎两个鸡蛋。(谷歌面试)
例题6 称球问题
问题:你有8个大小一样的球,其中7个重量相同,只有一个略重一些。给你一个天平,而且只准称两次,如何找出重量不同的那个球?
问题:有12个球,有一个球重量未知,或重或轻,其余11个球一样重,称量三次,找出这个球,并判断是轻还是重?
answer
分三组:每组四个,第一组编号1-4,第二组5-8,第三组9-12.
第一次称:天平左边放第一组,右边放第二组。
A 第一种可能:平衡。则不同的在第三组。
接下来可以在左边放第9、10、11号,右边放1、2、3号三个正常的。
a.如果平衡,则12号是不同的;
b.如果左重右轻,则不同的在9、10、11号中,而且比正常球重。再称一次:9放左边,10放右边,如果平衡,则11号是不同的;如果左重右轻,则9号是不同的,如果右重左轻,则10号是不同的。
c.如果左轻右重,道理同b
B 第二种可能:左重右轻,则不同的在1-8号中,但不知比正常的轻还是重。
第二次称:左边放1、2、5号,右边放6、9、3号。
a.如果平衡。则不同的在4、7、8中。可以称第三次:左边放4、7,右边放9、10。如果平衡,则8是不同;如果左重右轻,则4是不同;如果左轻右重,则7是不同。
b.仍然左重右轻。则不同的在位置没有改变的1、2、6中。可以称第三次:左边放1、6,右边放9、10。如果平衡,则2是不同; 如果左重右轻,则1是不同;如果左轻右重,则6是不同。
c:左轻右重。则不同的在5、3、中,因为只有它们改变了原来的位置。可以称第三次:左放5,3,右放9,10。如果左轻右重,则5是不同,如果左重右轻,则3是不同。
C 第三种可能:左轻右重,道理同B
至此,不论发生任何情况,称三次都可以找出不同,而且知道比正常的轻了还是重了。
例题7 为爱战斗
三个小伙子同时爱上了一个姑娘,为了决定他们谁能娶这个姑娘,他们决定用手*枪进行一次决斗。小李的命中率是30%,小黄比他好些,命中率是50%,最出色 的枪手是小林,他从不失 误,命中率是100%。由于这个显而易见的事实,为公平起见,他们决定按这样的顺序:小李先开枪,小黄第二,小林最后。然后这样循环,直到他们只剩下一个 人。那么这三个人中谁活下来的机会最大呢?他们都应该采取什么样的策略?
例题8 海盗分金
5名海盗抢得了窖藏的100块金子,并打算瓜分这些战利品。这是一些讲民主的海盗(当然是他们自己特有的民主),他们的习惯 是按下面的方式进行分配:最厉害的一名海盗提出分配方案,然后所有的海盗(包 括提出方案者本人)就此方案进行表决。如果50%或更多的海盗赞同此方案,此方 案就获得通过并据此分配战利品。否则提出方案的海盗将被扔到海里,然后下一名 最厉害的海盗又重复上述过程。 所有的海盗都乐于看到他们的一位同伙被扔进海里,不过,如果让他们选择的 话,他们还是宁可得一笔现金。他们当然也不愿意自己被扔到海里。所有的海盗都 是有理性的,而且知道其他的海盗也是有理性的。此外,没有两名海盗是同等厉害 的——这些海盗按照完全由上到下的等级排好了座次,并且每个人都清楚自己和其 他所有人的等级。这些金块不能再分,也不允许几名海盗共有金块,因为任何海盗 都不相信他的同伙会遵守关于共享金块的安排。这是一伙每人都只为自己打算的海 盗。 最凶的一名海盗应当提出什么样的分配方案才能使他获得最多的金子呢?
逆推思维
如果轮到第四个海盗分配:100,0
轮到第三个:99,0,1
到第二个:99,0,1,0
轮到第一个:98,0,1,0,1,这就是第一个海盗的最佳方案。
变形:如果条件改为 超过一半以上的人数同意某海盗提出的方案,才通过,否则海盗被仍进海里,答案又是怎样的呢?
例题9 药瓶与毒水
1)你有四个装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染的重量+1.只称量一次,如何判断哪个罐子的药被污染了?
2)有1000瓶矿泉水,其中只有一瓶有毒,老鼠喝之后,24小时内死亡,请问最少需要多少只老鼠可在24小时后就确定哪一瓶水有毒?
例题10 问路问题
一个岔路口分别通向诚实国和说谎国。来了两个人,已知一个是诚实国的,另一个是说谎国的。诚实国永远说实话,说谎国永远说谎话。现在你要去说谎国,但不知道应该走哪条路,需要问这两个人。请问应该怎么问?
例题11 三个女儿
一个经理有三个女儿, 三个女儿的年龄加起来等于13,三个女儿的年龄乘起来等于经理自己的年龄,有一个下属已知道经理的年龄,但仍不能确定经理三个女儿的年龄,这时经理说只有 一个女儿的头发是黑的,然后这个下属就知道了经理三个女儿的年龄。请问三个女儿的年龄分别是多少?为什么?
例题12 绿帽子问题
一群人开舞会,每人头上都戴着一顶帽子。帽子只有红绿两种,绿的至少有一顶。每个人都能看到其它人帽子的颜色,却看不到自己的。主持人先让大家看看别人头上戴的是什幺帽子,然后关灯,如果有人认为自己戴的是绿帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着绿帽子?(和一个村庄,女人能识别别人家的男人是否偷情,却看不到自家男人偷情的故事一样)
例题13 关灯问题
对一批编号为1~100,全部开关朝上(开)的灯进行以下*作:凡是1的倍数反方向拨一次开关;2的倍数反方向又拨一次开关;3的倍数反方向又拨一次开关……问:最后为关熄状态的灯的编号。
例题14 捉果冻问题
你有一桶果冻,其中有黄色,绿色,红色三种,闭上眼睛,抓取两个同种颜色的果冻.抓取多少个就可以确定你肯定有两个同一颜色的果冻?
例题15,分马驮石
现在共有100匹马跟100块石头,马分3种,大型马;中型马跟小型马。其中一匹大马一次可以驮3块石头,中型马可以驮2块,而小型马2头可以驮一块石头。问需要多少匹大马,中型马跟小型马?(问题的关键是刚好必须是用完100匹马)
例题16 囚犯活命
5个囚犯,分别按1-5号在装有100颗绿豆的麻袋抓绿豆,规定每人至少抓一颗,而抓得最多和最少的人将被处死,而且,他们之间不能交流,但在抓的时候,可以摸出剩下的豆子数。问他们中谁的存活几率最大?提示:
1,他们都是很聪明的人
2,他们的原则是先求保命,再去多杀人
3,100颗不必都分完
4,若有重复的情况,则也算最大或最小,一并处死
例题17 飞机加油问题
已知: 每个飞机只有一个油箱, 飞机之间可以相互加油(注意是相互,没有加油机) 一箱油可供一架飞机绕地球飞半圈, 问题:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场)(答案:3 )
例题18. 名人问题
在一个房间里有 N 个人,其中一个是名人,所谓名人就是大家都认识他,但是他不认识任何人。其它人可能认识房间里面另外的一部分人。你可以问任何人问题,但是问题只能是:你认识 X 吗,对方回答 Yes or No. 请问最少要问多少个问题才能把名人找出来?
例题19.吃豆豆问题
兔子A要过一个80米长的桥,它每走一米要吃一个豆子,每次它总共可以带60颗豆子,它过完桥至少要吃多少颗豆子? 如果桥长81米呢?82呢?83呢?。。。。。
例题20. 共享问题
假如我们班有n个MM,每一个MM都有一个独家八卦消息。两个MM可以通过电话联系,一通电话将使得双方都获知到对方目前已知的全部消息。要想所有n个MM都知道所有n条八卦消息,最少需要多少通电话?(详细答案:http://www.matrix67.com/blog/archives/1078)
例题21.赛马问题
一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问,最少得比多少场才能知道跑得最快的3匹马?5匹马呢?
64匹马,8个赛道,比赛多少场可决策出最快的4匹马?8匹马呢?
例题22. 运煤问题
你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市?(http://coolshell.cn/articles/4429.html)
解题要点:1. 半途中可以卸载,且卸载时不消耗煤 2 每次都应该尽量装满车(满载)
假设火车容量是K,有NK吨煤(N=1,2,3....),最多能送多少煤到集市呢?
total=0; // 可运煤的总量,初始化为0;
while(N>1){
total+=K*1.0/(2*N-1);
N--;
}
// total即为最后的结果
23 换水问题
2013.9.27. 5个空水瓶可以换一瓶水,问喝n瓶水,需要买多少瓶水?
早上想出如下解法:
(本来这些题是小学奥赛上的一道题,用数学公式应该可以推到,但是这些个思维均远离了我啊,反复思索,如今才恍然大悟)
1+5/4(x-1)=n; 意思是买一瓶水,可以喝一瓶,.......如果再买4瓶,则可喝到5瓶(5换1),及往后递推,4换5,推得x=(4n+1)/5, 结果向上取整
或许也可用递推的方法,暂时没想通。。。。 继续想
24 求平均数
2013.9.27
n个人,每个人的工资都保密,n个人通过相互交流可以得知n个人的平均工资,交流过程中,不能人被人推得你的工资。
25 找出好人
2013.10.11
有n个人,其中超过半数是好人,剩下的是坏人.好人只说真话,坏人可能说真话也可能说假话.这n个人互相都知道对方是好人还是坏人,现在要你从这n个人当中找出一个好人来,只能通过以下方式:每次挑出两个人,让这两个人互相说出对方的身份,你根具两个人的话进行判断。问通过何种方法才能最快的找出一个好人来,(要考虑最坏的情况)
思路:
两两分组的情况为:
(1)好人+好人---好人,好人
(2)好人+坏人---好人,坏人 或 坏人,坏人
(3)坏人+坏人---好人,好人 或 坏人,坏人 或 坏人,好人
算法为:
(1)若n<=4,则至多需要比较2次可以结束算法,否则转(2);
(2)若n>4,两两分组,淘汰掉互识身份出现"坏人"的组,且对互识身份出现"好人"的组,只保留1人进入下一伦.对剩余的转(1).
算法效率分析,最坏情况下都是好人,则每次淘汰n/2,方程为:
H(n)=2 (n<=4)
H(n)=H(n/2)+n (n>4)
解之:H(n)=2n. 所以时间开销为O(n).
26 找出众数
一串N个元素注意,不一定是整数),若存在某一个元素出现的次数在一半以上,则称为“众数”,现在给你一串N个元素,问怎么快速并且节省时间地判断众数是否存在,如果存在,需要找到这个元素。