几个有意思的题目
题目一
有三个白人被一个印第安反对部落俘虏了。部落的首领愿意把他们放了,所以他把他们领到一个没有亮光的帐篷里。他给了每人一条头巾(他有三条头巾,三白二红-所以有两条是没用到的)。然后他们排着队出去,这样,每个人都可以看到前面人的头巾颜色,但是看不到自已头巾的颜色(第一个走出去的人看不到任何头巾,第二个人可以看到第一个人的头巾,第三个人可以看到前面两个人的头巾)。如果有其中一个人说出了自己头巾的颜色,那所有人的可以被放了。几分钟的沉默后,其中一个人说:“我头巾的颜色是。。。”。
附加条件:
- 你可以设想所有的囚犯都是聪明的,而且他们对同伴的智慧也很有信心。
- 他们猜错了一次就会被监禁。
- 所有人加起来只能猜一次。
- 所有人都想被释放。
题目二
两国交战,一方抓到10个战俘,决定用以下方式判定他们的生死: 10人排成一列,每人戴上一顶或红或蓝的帽子,每个人都只能看到自己前面的人.然后从后往前,猜自己帽子的颜色,对的放走,错的枪毙. 战俘们经过讨论,决定团结一致,力求更多人存活.问:最多能保证多少人幸存?
题目三
一个游戏,有四个棋子(棋子两面一面是黑色一面是白色),放在可以旋转的桌子上四个角,任意初始状态,一次可以翻一个或多个棋,一旦桌子上棋子全黑或全白,游戏结束。蒙着眼睛翻棋子,每翻一次,桌子会旋转90度的倍数,问,最坏多少次能结束游戏
例如:初始状态四个棋子为:
1 0
0 1
只需要一次,翻任对角两个即可终止游戏
题目四
两个鸡蛋,100层楼,设计方案,最小最坏情况需要多少次可以判断鸡蛋从多少层楼摔下来摔不破?
题目一
粗看,一下子看不出什么结果来,需要细细分析。
三个人,帽子三白两红,每个人可以看到前面人的帽子颜色,而且是经过一段时间后才出来的结果。
假设一,假设前两个人是红色,第三个人会立马说出结果,只有白色,所以前面两个人不可能同时为红色。
假设二,第一个是红色,有假设一得知,第二个人在第三个人确定不了的时候,只能为白色,会立马说出结果。
假设三,第一个人是白色,经过一段时间,说明第二、三个人确定不了自己的颜色,自己只能是白色,假设成立。
所以结果是第一个人说出自己的头巾是白色
题目二
先联想一下,每个人两个颜色,一共10个人,估计一下结果集,2^10,1024个排列组合,然后需要根据每个人的话,猜出这个数字是多少,想到了什么,二分查找?
再联想一下,这是一串网络中传输的byte流,怎么校验数据是否丢失?
恩,奇偶校验码,最后一位表示byte流中1的个数,回到问题,最后一个人能看到前面所有人的帽子,就说前面奇数个帽子的颜色是什么就可以了。期望9.5个人存活。
例如前面4个红帽子,5个白帽子,第十个猜白色,第九个人根据第十个人的话和前面八个人的帽子的颜色,可以判断自己的颜色,以此类推。。。
题目三
三类有效初始状态:
A.
1 0
0 0
B.
1 1
0 0
C.
1 0
0 1
三种有效翻法:
1.
翻一个
2.
翻相领两个
3.
翻对角两个
初始状态经过翻法之后到达的状态表:
初始状态 | 翻法1 | 翻法2 | 翻法3 |
---|---|---|---|
A | B、C、终止 | A | A |
B | A | C、终止 | B |
C | A | B | 终止 |
最坏情况: 初始状态为A,翻法3一次,排除C、翻法2、3一次,排除B,翻法1、3、2、3,结束游戏,最多需要7次即可结束游戏
题目四
- 二分不可取,鸡蛋第一次碎了,第二个鸡蛋需要从区间开头挨个试,第一次碎了,第二次需要尝试48次。
- 均分不可取,100层楼,分10份,最坏需要17次
- 考虑第一次没碎,第二次减少一次尝试,即有以下不等式:
x + (x-1) + (x-2) + ... + 1 >= 100
解得:x>=14
尝试方案:14、27、39...,这种设计方法,最坏14次
转载于:https://my.oschina.net/serverx/blog/661236
上一篇: case when 多条件查询