CS-Notes/notes/笔记/智力题.md.txt
2018-02-22 14:47:22 +08:00

193 lines
19 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[TOC]
# 智力题
**1. 有 20 瓶药丸,其中 19 瓶装有 1 克/粒的药丸,余下一瓶装有 1.1 克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。**
可以从药丸的数量上来制造差异:从第 i 瓶药丸中取出 i 个药丸,然后一起称重。可以知道,如果第 i 瓶药丸重 1.1 克/粒,那么称重结果就会比正常情况下重 0.1 * i 克。
**2. 有个 8×8 棋盘,其中对角的角落上,两个方格被切掉了。给定 31 块多米诺骨牌,一块骨牌恰好可以覆盖两个方格。用这 31 块骨牌能否盖住整个棋盘?**
![](index_files/0588c158-1dff-434c-b590-9cd2fe5fc7e2.jpg)
将棋盘划分成黑白两种颜色,每种颜色不相邻,那么一块骨牌需要同时覆盖黑色和白色两个方格。假设切掉的两个对角的方格是黑色的,那么只剩下 32 块白色方格和 30 块黑色方格,因此不能用 31 块骨牌覆盖。
**3. 有两个水壶,容量分别为 5 夸脱和 3 夸脱,若水的供应不限量,怎么用这两个水壶得到刚好 4 夸脱的水?**
![](index_files/9ba3b88b-eace-4a3a-9095-1e9c5c62a6cf.png)
**4. 有个岛上住着一群人,有一天来了个游客,定了一条奇怪的规矩:所有蓝眼睛的人都必须尽快离开这个岛。 每晚 8 点会有一个航班离岛。每个人都看得见别人眼睛的颜色,但不知道自己的(别人也不可以告知)。此外,他们不知道岛上到底有多少人是蓝眼睛的,只知道至少有一个人的眼睛是蓝色的。所有蓝眼睛的人要花几天才能离开这个岛?**
假定这个岛上一共有 n 人,其中 c 人有蓝眼睛。
1\. 情况 c = 1
假设岛上所有人都是聪明的,蓝眼睛的人四处观察之后,发现没有人是蓝眼睛的。但他知道至少有一人是蓝眼睛的,于是就能推导出自己一定是蓝眼睛的。因此,他会搭乘当晚的飞机离开。
2\. 情况 c = 2
两个蓝眼睛的人看到对方,并不确定 c 是 1 还是 2但是由上一种情况他们知道如果 c = 1那个蓝眼睛的人第一晚就会离岛。因此发现另一个蓝眼睛的人仍在岛上他一定能推断出 c = 2也就意味着他自己也是蓝眼睛的。于是两个蓝眼睛的人都会在第二晚离岛。
3\. 情况 c > 2一般情况
逐步提高 c 时,我们可以看出上述逻辑仍旧适用。如果 c = 3那么这三个人会立即意识到有 2 到 3 人是蓝眼睛的。如果有两人是蓝眼睛的,那么这两人会在第二晚离岛。因此,如果过了第二晚另外两人还在岛上,每个蓝眼睛的人都能推断出 c = 3因此这三人都有蓝眼睛。他们会在第三晚离岛。不论 c 为什么值,都可以套用这个模式。所以,如果有 c 人是蓝眼睛的,则 **所有蓝眼睛的人要用 c 晚才能离岛,且都在同一晚离开**。
**5. 有栋建筑物高 100 层。若从第 N 层或更高的楼层扔下来,鸡蛋就会破掉。若从第 N 层以下的楼层扔下来则不会破掉。给你 2 个鸡蛋,请找出 N并要求最差情况下扔鸡蛋的次数为最少。**
首先,让我们试着从 10 层开始扔鸡蛋,然后是 20 层,等等。
1\. 如果鸡蛋1第一次扔下楼10层就破掉了那么最多需要扔 10 次。
2\. 如果鸡蛋1最后一次扔下楼100层才破掉那么最多要扔 19 次10、 20、…、 90、100 层,然后是 91 到 99 层)。
这么做也挺不错,但我们只考虑了绝对最差情况。我们应该进行“负载均衡”,让这两种情况下扔鸡蛋的次数更均匀。
我们的目标是设计一种扔鸡蛋的方法使得扔鸡蛋1时不论是在第一次还是最后一次扔下楼才破掉次数越稳定越好。
完美负载均衡要求每次鸡蛋1多扔一次鸡蛋2就应该少扔一次这样每种情况下扔鸡蛋的次数都相同。由此可知鸡蛋1必须从 X 层开始往下扔,然后再往上增加 X - 1 层……直至到达 100 层。
求解方程式 X + (X-1) + (X-2) + … + 1 = 100得到X (X + 1) / 2 = 100 → X = 14。
我们先从 14 层开始,然后是 27 层,接着是 39 层,依此类推,最差情况下鸡蛋要扔 14 次。
正如解决其他许多最大化/最小化的问题一样,这类问题的关键在于“平衡最差情况”。
**6. 走廊上有 100 个关上的储物柜。有个人先是将 100 个柜子全都打开。接着,每数两个柜子关上一个。然后,在第三轮时,再每隔两个就切换第三个柜子的开关状态。照此规律反复操作 100 次,在第 i 轮,这个人会每数 i 个就切换第 i 个柜子的状态。当第 100 轮经过走廊时,只切换第 100 个柜子的开关状态,此时有几个柜子是开着的?**
1\. 问题:柜子会在哪几轮切换状态?
柜子n会在n的每个因子包括 1 和 n 本身对应的那一轮切换状态。也就是说柜子15会在第 1、 3、 5 和 15 轮开或关一次。
2\. 问题:柜子什么时候还是开着的?
如果因子个数(记作 x )为奇数,则这个柜子是开着的。你可以把一对因子比作开和关,若还剩一个因子,则柜子就是开着的。
3\. 问题: x 什么时候为奇数?
若 n 为完全平方数,则 x 的值为奇数。理由如下:将 n 的两个互补因子配对。例如,如 n 为 36则因子配对情况为 (1, 36)、 (2, 18)、 (3, 12)、 (4, 9)、 (6, 6)。注意, (6, 6) 其实只有一个因子,因此 n 的因子个数为奇数。
4\. 问题:有多少个完全平方数?
一共有 10 个完全平方数1\*1, 2\*2, 3\*3, ..., 10\*10
因此,**最后共有 10 个柜子是开着的**。
**7. 给定两条绳子,每条绳子燃烧殆尽正好要用一个小时。怎样用这两条绳子准确计量 15 分钟?注意这些绳子密度不均匀,因此烧掉半截绳子不一定正好用半个小时。**
1\. 点燃绳子 1 两头的同时,点燃绳子 2 的一头。
2\. 当绳子 1 烧完,正好过去 30 分钟。而绳子 2 还可以再烧 30 分钟。
3\. 点燃绳子 2 的另一头。
4\. 15 分钟后,绳子 2 将全部烧完。
**8. 给定 9 个球,其中 8 个球的重量相同,只有一个比较重。然后给定一个天平,可以称出左右两边哪边更重。最多用两次天平,找出这个重球。**
将这些球均分成 3 个一组共 3 组,称量一次就能知道哪一组球更重。我们甚至可以总结出一条规律:给定 N 个球,其中 N 能被 3 整除,称量一次便能找到包含重球的那一组球。
找到这一组 3 个球之后,我们只是简单地重复此前的模式:先把一个球放到一边,称量剩下的两个球。从中挑出那个重球;或者,如果这两个球重量相同,那第 3 个球便是重球。
**9. 考虑一个双人游戏。游戏在一个圆桌上进行。每个游戏者都有足够多的硬币。他们需要在桌子上轮流放置硬币,每次必需且只能放置一枚硬币,要求硬币完全置于桌面内(不能有一部分悬在桌子外面),并且不能与原来放过的硬币重叠。谁没有地方放置新的硬币,谁就输了。游戏的先行者还是后行者有必胜策略?**
先行者在桌子中心放置一枚硬币,以后的硬币总是放在与后行者刚才放的地方相对称的位置。这样,只要后行者能放,先行者一定也有地方放。先行者必胜。
**10. 一个矩形蛋糕,蛋糕内部有一块矩形的空洞。只用一刀,如何将蛋糕切成大小相等的两块?**
注意到平分矩形面积的线都经过矩形的中心。过大矩形和空心矩形各自的中心画一条线,这条线显然把两个矩形都分成了一半,它们的差当然也是相等的。
**11. 一块矩形的巧克力,初始时由 N x M 个小块组成。每一次你只能把一块巧克力掰成两个小矩形。最少需要几次才能把它们掰成 N x M 块 1x1 的小巧克力?**
因为每掰一次后当前巧克力的块数只能增加 1把巧克力分成 N x M 块当然需要至少掰 N x M - 1 次。
**12. 地球上有多少个点,使得从该点出发向南走一英里,向东走一英里,再向北走一英里之后恰好回到了起点?**
“北极点”是一个传统的答案,其实这个问题还有其它的答案。事实上,满足要求的点有无穷多个。所有距离南极点 1 + 1/(2π) 英里的地方都是满足要求的,向南走一英里后到达距离南极点 1/(2π) 的地方,向东走一英里后正好绕行纬度圈一周,再向北走原路返回到起点。事实上,这仍然不是满足要求的全部点。距离南极点 1 + 1/(2kπ) 的地方都是可以的,其中 k 可以是任意一个正整数。
**13. A、B 两人分别在两座岛上。B 生病了A 有 B 所需要的药。C 有一艘小船和一个可以上锁的箱子。C 愿意在 A 和 B 之间运东西但东西只能放在箱子里。只要箱子没被上锁C 都会偷走箱子里的东西,不管箱子里有什么。如果 A 和 B 各自有一把锁和只能开自己那把锁的钥匙A 应该如何把东西安全递交给 B **
A 把药放进箱子用自己的锁把箱子锁上。B 拿到箱子后,再在箱子上加一把自己的锁。箱子运回 A 后A 取下自己的锁。箱子再运到 B 手中时B 取下自己的锁,获得药物。
**14. 一对夫妇邀请 N-1 对夫妇参加聚会(因此聚会上总共有 2N 人)。每个人都和所有自己不认识的人握了一次手。然后,男主人问其余所有人(共 2N-1 个人)各自都握了几次手,得到的答案全部都不一样。假设每个人都认识自己的配偶,那么女主人握了几次手?**
握手次数只可能是从 0 到 2N-2 这 2N-1 个数。除去男主人外,一共有 2N-1 个人,因此每个数恰好出现了一次。其中有一个人(0)没有握手,有一个人(2N-2)和所有其它的夫妇都握了手。这两个人肯定是一对夫妻,否则后者将和前者握手(从而前者的握手次数不再是 0。除去这对夫妻外有一个人(1)只与(2N-2)握过手,有一个人(2N-3)和除了(0)以外的其它夫妇都握了手。这两个人肯定是一对夫妻,否则后者将和前者握手(从而前者的握手次数不再是 1。以此类推直到握过 N-2 次手的人和握过 N 次手的人配成一对。此时,除了男主人及其配偶以外,其余所有人都已经配对。根据排除法,最后剩下来的那个握手次数为 N-1 的人就是女主人了。
**15. 你在一幢 100 层大楼下,有 21 根电线线头标有数字 1..21。这些电线一直延伸到大楼楼顶,楼顶的线头处标有字母 A..U。你不知道下面的数字和上面的字母的对应关系。你有一个电池一个灯泡和许多很短的电线。如何只上下楼一次就能确定电线线头的对应关系**
在下面把 2,3 连在一起,把 4 到 6 全连在一起,把 7 到 10 全连在一起,等等,这样你就把电线分成了 6 个“等价类”,大小分别为 1, 2, 3, 4, 5, 6。然后到楼顶测出哪根线和其它所有电线都不相连哪些线和另外一根相连哪些线和另外两根相连等等从而确定出字母 A..U 各属于哪个等价类。现在,把每个等价类中的第一个字母连在一起,形成一个大小为 6 的新等价类;再把后 5 个等价类中的第二个字母连在一起,形成一个大小为 5 的新等价类;以此类推。回到楼下,把新的等价类区别出来。这样,你就知道了每个数字对应了哪一个原等价类的第几个字母,从而解决问题。
**16. 某种药方要求非常严格,你每天需要同时服用 A、B 两种药片各一颗,不能多也不能少。这种药非常贵,你不希望有任何一点的浪费。一天,你打开装药片 A 的药瓶,倒出一粒药片放在手心;然后打开另一个药瓶,但不小心倒出了两粒药片。现在,你手心上有一颗药片 A两颗药片 B并且你无法区别哪个是 A哪个是 B。你如何才能严格遵循药方服用药片并且不能有任何的浪费**
把手上的三片药各自切成两半,分成两堆摆放。再取出一粒药片 A也把它切成两半然后在每一堆里加上半片的 A。现在每一堆药片恰好包含两个半片的 A 和两个半片的 B。一天服用其中一堆即可。
**17. 你在一个飞船上,飞船上的计算机有 n 个处理器。突然,飞船受到外星激光武器的攻击,一些处理器被损坏了。你知道有超过一半的处理器仍然是好的。你可以向一个处理器询问另一个处理器是好的还是坏的。一个好的处理器总是说真话,一个坏的处理器总是说假话。用 n-2 次询问找出一个好的处理器。**
给处理器从 1 到 n 标号,并用符号 a->b 表示向标号为 a 的处理器询问处理器 b 是不是好的。
首先 1->2如果 1 说不是,就把他们俩都去掉(去掉了一个好的和一个坏的,则剩下的处理器中好的仍然过半),然后从 3->4 开始继续发问;如果 1 说 2 是好的,就继续问 2->33->4…… 直到某一次 j 说 j+1 是坏的,把 j 和 j+1 去掉,然后问 j-1 -> j+2如果前面已经没有 j-1 了,从 j+2 -> j+3 开始发问。
注意到你始终维护着这样一个“链”,前面的每一个处理器都说后面那个是好的。这条链里的所有处理器要么都是好的,要么都是坏的。当这条链越来越长,剩下的处理器越来越少时,总有一个时候这条链超过了剩下的处理器的一半,此时可以肯定这条链里的所有处理器都是好的。或者,越来越多的处理器都被去掉了,链的长度依旧为 0而最后只剩下一个或两个处理器没被问过那他们一定就是好的了。另外注意到第一个处理器的好坏从来没被问过仔细想想你会发现最后一个处理器的好坏也不可能被问到一旦链长超过剩余处理器的一半或者最后没被去掉的就只剩这一个了时你就不问了因此询问次数不会超过 n-2。
**18. 有 25 匹马,速度都不同,但每匹马的速度都是定值。现在只有 5 条赛道,无法计时,即每赛一场最多只能知道 5 匹马的相对快慢。问最少赛几场可以找出 25 匹马中速度最快的前 3 名百度2008年面试题**
每匹马都至少要有一次参赛的机会,所以 25 匹马分成 5 组,一开始的这 5 场比赛是免不了的。接下来要找冠军也很容易,每一组的冠军在一起赛一场就行了(第 6 场)。最后就是要找第 2 和第 3 名。我们按照第 6 场比赛中得到的名次依次把它们在前 5 场比赛中所在的组命名为 A、B、C、D、E。即A 组的冠军是第 6 场的第 1 名B 组的冠军是第 6 场的第 2 名……每一组的 5 匹马按照他们已经赛出的成绩从快到慢编号:
A组1**23**45
B组**12**345
C组**1**2345
D组12345
E组12345
从现在所得到的信息,我们可以知道哪些马已经被排除在 3 名以外。只要已经能确定有 3 匹或 3 匹以上的马比这匹马快,那么它就已经被淘汰了。可以看到,只有上表中粗体的那 5 匹马才有可能为 2、3 名的。即A 组的 2、3 名B 组的 1、2 名C 组的第 1 名。取这 5 匹马进行第 7 场比赛,第 7 场比赛的前两名就是 25 匹马中的 2、3 名。故一共最少要赛 7 场。
**19. 有 7 克、2 克砝码各一个天平一只如何只用这些物品三次将140 克的盐分成 50、90 克各一份?**
第一步:把 140 克盐分成两等份,每份 70 克。
第二步:把天平一边放上 2+7 克砝码,另一边放盐,这样就得到 9 克和 61 克分开的盐。
第三步:将 9 克盐和 2 克砝码放在天平一边,另一边放盐,这样就得到 11 克和 50 克。于是 50 和 90 就分开了。
**20. 有三筐水果,一筐装的全是苹果,第二筐装的全是橘子,第三筐是橘子与苹果混在一起。筐上的标签都是骗人的,(比如,如果标签写的是橘子,那么可以肯定筐里不会只有橘子,可能还有苹果)你的任务是拿出其中一筐,从里面只拿一只水果,然后正确写出三筐水果的标签。**
从贴有苹果和橘子标签的筐中拿出一个水果,如果是苹果,说明这个筐中全是苹果,那么贴苹果标签的筐里装的全是桔子,则贴有桔子标签的筐中装的苹果和桔子;如果拿出的一个水果是桔子,说明这个筐中全是桔子,那么贴桔子标签的筐里装的全是苹果,贴苹果标签的筐里装的是苹果和桔子。
# 数字推理
数列常见的有等差等比关系,等差关系中数之间的 **间隔** 相同,等比关系中数之间的 **比值** 相同。不规则的数列,间隔和比值都不会相同,但是间隔和比值又可以当做一个数列,并且这个数列具有等差等比关系。例如 34691318间隔数列为 1, 2, 3, 4, 5 为等差数列88122460180比值数列为 1, 1.5, 2, 2.5 为等比数列。
数列也可能和 **平方、立方、次方** 相关。例如 6683102123146 为 8, 9, 10, 11, 12 的平方再加 2 所得062460120210 为 n<sup>3</sup> - 1。
当相邻的数都没规律时,考虑 **错位** 的情况。例如 5410815162032 ,奇数列和偶数列分别为一个等差数列和一个等比数列。
数列中一个数不一定只和前一个数有关,有可能 **和前两个数有关**,例如 251050500第三个数为前两个数的乘积。
# 图形推理
**1. 结构类**
- 对称性(水平对称、垂直对称、中心对称)
- 直曲性(直线、曲线)
- 封闭与开放
**2. 位置类**
- 相对位置(相交、相离、相切;相对与相邻;独立于覆盖)
- 移动、旋转、翻转
**3. 叠加类**
- 直接叠加
- 去同存异
- 去异存同
- 自定义叠加(阴影变化)
**4. 组合类**
**5. 数量类**
- 点十字交叉点、T 字交叉点、切点、接触点数量)
- 线(线条数:直线数、曲线数、线条总数;笔画数;一笔画与多笔画)
- 角(锐角、直角、钝角的数量)
- 面(封闭区域数、面积大小、面的个数)
数量关系有:
- 相同
- 等差
- 等比
- 和相等
![](index_files/FireShot_20Capture_209_20-_20_u.png)
# 参考资料
1. 程序员面试金典
2. [数字推理题的各种规律范例题型](http://www.linquan.info/archives/62.html)
3. [程序员有趣的面试智力题](http://blog.csdn.net/hackbuteer1/article/details/6726419)
4. [图形推理50题 答案及解析](http://blog.sina.com.cn/s/blog_7815fa370100tdgm.html)