程序员有趣的面试智力题

合集下载

程序员面试智力题(1)

程序员面试智力题(1)

1. 考虑一个双人游戏。

游戏在一个圆桌上进行。

每个游戏者都有足够多的硬币。

他们需要在桌子上轮流放置硬币,每次必需且只能放置一枚硬币,要求硬币完全置于桌面内(不能有一部分悬在桌子外面),并且不能与原来放过的硬币重叠。

谁没有地方放置新的硬币,谁就输了。

游戏的先行者还是后行者有必胜策略?这种策略是什么?答案:先行者在桌子中心放置一枚硬币,以后的硬币总是放在与后行者刚才放的地方相对称的位置。

这样,只要后行者能放,先行者一定也有地方放。

先行者必胜。

2. 用线性时间和常数附加空间将一篇文章的单词(不是字符)倒序。

答案:先将整篇文章的所有字符逆序(从两头起不断交换位置相对称的字符);然后用同样的办法将每个单词内部的字符逆序。

这样,整篇文章的单词顺序颠倒了,但单词本身又被转回来了。

3. 用线性时间和常数附加空间将一个长度为n的字符串向左循环移动m位(例如,"abcdefg"移动3位就变成了"defgabc")。

答案:把字符串切成长为m和n-m的两半。

将这两个部分分别逆序,再对整个字符串逆序。

4. 一个矩形蛋糕,蛋糕内部有一块矩形的空洞。

只用一刀,如何将蛋糕切成大小相等的两块?答案:注意到平分矩形面积的线都经过矩形的中心。

过大矩形和空心矩形各自的中心画一条线,这条线显然把两个矩形都分成了一半,它们的差当然也是相等的。

5. 一块矩形的巧克力,初始时由N x M个小块组成。

每一次你只能把一块巧克力掰成两个小矩形。

最少需要几次才能把它们掰成N x M块1x1的小巧克力?答案:N x M - 1次显然足够了。

这个数目也是必需的,因为每掰一次后当前巧克力的块数只能增加一,把巧克力分成N x M块当然需要至少掰N x M - 1次。

6. 如何快速找出一个32位整数的二进制表达里有多少个"1"?用关于"1"的个数的线性时间?答案1(关于数字位数线性):for(n=0; b; b >>= 1) if (b & 1) n++;答案2(关于"1"的个数线性):for(n=0; b; n++) b &= b-1;7. 一个大小为N的数组,所有数都是不超过N-1的正整数。

程序员面试智力题

程序员面试智力题

程序员面试智力题1.扑克牌问题问题:一付54张扑克牌,其中有十张是翻过来的。

现在把你的眼睛蒙上(绝对没有偷看的可能),让你把扑克牌分成两叠(两叠的多少可以不一样)。

要求在两叠中翻过来的扑克牌是相等的。

请问该怎么做?除了扑克牌的数目,其它因数(扑克牌大小,重量,颜色,表面触摸的感觉,等等)不参与题目之中。

扑克牌可以任意次重新排序、翻转。

10张翻过来的扑克牌是随机分布在扑克牌中。

答案:第一步,你在这54张牌中任意取出10张,现在,扑克牌分成了两叠。

44张和10张;第二步,44张那叠不动,将10张这叠每张都翻过来,便得到了符合条件的两叠牌。

解释:第一步之后,设44张那叠中正面牌x张,10张那叠中正面牌则为10-x张。

第二步之后,44张那叠中正面牌保持x张,10张那叠反过来了:反面牌为10-x张,正面牌x张。

2.分金条问题问题:有个商人雇用了一位手艺高超的工匠了为他做一个精致产品,工作一星期七天的代价是一条金条。

商人手头上有一条金条,刚好有可以付工匠一星期的工钱。

但工匠要求工钱要按每天来付。

虽然他并不急着用钱,每天有钱进账,老人心里总是踏实一些。

但商人家中有个规矩,金条每星期只能切二刀。

后来商人想出以了个切割金条的办法,满足了工匠的要求。

你知道商人是怎么切割金条才能满足工匠的吗?答案:切成1、2、4。

解释:这三个二进制数的组合能表示0-7中的任何一个。

3.送花瓶问题:古时候有一位商人要让伙计将一个精致的花瓶送到买主的手里。

买主住在很远的地方,路途中间要经过土匪出没的地方。

土匪要是见到花瓶就会抢走。

但土匪不会打开锁着的东西,只要把花瓶锁在箱子里就可以安全地送到目的地(这土匪看起来还很文明)。

所以商人准备了一个大箱子,在箱子上装了个很大很结实的的锁扣,足以挂几把锁。

商人还准备了一把精致的铁锁将花瓶锁在箱子里。

这把铁锁的钥匙是独一无二的,没有这把钥匙,按照当时的技术箱子是绝对打不开的。

但问题来了,土匪只要见到钥匙就会没收。

智力问题

智力问题

智力问题(软件工程师面试)一、在一个与外界不往来的村庄中,住了三个人。

这三个人都不能说话,但都很聪明。

这村庄人的头发,不是黑色就是红色。

这村庄也没有任何可经由反射而看到自己的物体(如:镜子,湖水)所以这三人都无法得知自己头发的颜色。

这村庄有个习俗:知道自己头发的颜色后再自杀,可以快乐的上天堂;若猜错自己头发颜色就自杀,那就会痛苦地下地狱。

这三个人都很想上天堂,但都苦于无法得知自己的发色而迟迟无法进行。

这三人每天中午都会在广场上聚集,彼此相望,希望能得知自己的头发颜色。

这种困境一直到一个外地人的介入而打破。

有一天,一个外地人进入了这村庄,在广场碰到了这三人,随口说了一句话:「你们三人至少有一个是红头发。

」说完便离开村庄了。

当天三人听完这句话,都纷纷回家苦思。

第二天中午,三人依旧一起在广场见面。

第二天晚上回去,就有两人自杀成功。

第三天中午,只剩一个人到广场。

此人回去后也自杀成功了。

请问:这三人的头发分别为什么颜色?(说明理由)二、(一)玛丽莲问题玛丽莲问题是咳嗽兄昨天介绍的一个有趣的智力游戏(他用来类比一个有人认为不太有趣的话题):有三扇门可供选择,其中一扇门后面是汽车,另两扇门后面是山羊。

你当然想选中汽车。

主持人让你随便选。

比如,你选中了一号门。

于是,主持人打开了后面是山羊的一扇门,比如是三号门。

现在主持人问你:“为了以较大的概率选中汽车,你是坚持选一号门,还是愿意换选二号门?”这道题目的标准答案是换选二号门。

我当时对这个答案提出了疑问,认为在条件概率形式下,当三号门后面出现山羊时,一号和二号门后面是车的概率仍然均等。

深圳兄同意这个意见;咳嗽兄、长戟兄则分别从相对论和散文及童话故事对“换”的答案给予了证明。

但一直到无限兄提出一个翻牌模型,才使我开始看到“换”的方案背后的正确逻辑。

(二)条件概率:全概率和贝叶斯公式解游戏开始,设P(X)为A、B、C三道门后面有车的概率,则P(A)=P(B)=P©=1/3假定:游戏者任选了一道门A,而主持人(HOST)打开一道后面是羊的门,事实上有两种情况。

程序员面试笔试智力题及答案

程序员面试笔试智力题及答案

A.逻辑推理1、你让工人为你工作7天,给工人的回报是一根金条。

金条平分成相连的7 段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费?2、请把一盒蛋糕切成8份,分给8个人,但蛋糕盒里还必须留有一份。

3、小明一家过一座桥,过桥时是黑夜,所以必须有灯。

现在小明过桥要1秒,小明的弟弟要3秒,小明的爸爸要6秒,小明的妈妈要8秒,小明的爷爷要12秒。

每次此桥最多可过两人,而过桥的速度依过桥最慢者而定,而且灯在点燃后30秒就会熄灭。

问:小明一家如何过桥?4、一群人开舞会,每人头上都戴着一顶帽子。

帽子只有黑白两种,黑的至少有一顶。

每个人都能看到其他人帽子的颜色,却看不到自己的。

主持人先让大家看看别人头上戴的是什么帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。

第一次关灯,没有声音。

于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。

一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。

问有多少人戴着黑帽子?5、请估算一下CNTOWER电视塔的质量。

6、一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。

你乘坐电梯从一楼到十楼,每层楼电梯门都会打开一次,只能拿一次钻石,问怎样才能拿到最大的一颗?7、U2合唱团在17分钟内得赶到演唱会场,途中必需跨过一座桥,四个人从桥的同一端出发,你得帮助他们到达另一端,天色很暗,而他们只有一只手电筒。

一次同时最多可以有两人一起过桥,而过桥的时候必须持有手电筒,所以就得有人把手电筒带来带去,来回桥两端。

手电筒是不能用丢的方式来传递的。

四个人的步行速度各不同,若两人同行则以较慢者的速度为准。

Bono需花1分钟过桥,Edge需花 2 分钟过桥,Adam需花5分钟过桥,Larry需花10分钟过桥。

他们要如何在17分钟内过桥呢?8、烧一根不均匀的绳要用一个小时,如何用它来判断半个小时 ?9、为什么下水道的盖子是圆的?10、美国有多少辆加油站(汽车)?11、有7克、2克砝码各一个,天平一只,如何只用这些物品三次将140克的盐分成50、90克各一份?12、有一辆火车以每小时15公里的速度离开洛杉矶直奔纽约,另一辆火车以第小时20公里的速度从纽约开往洛杉矶。

关于程序员的脑筋急转弯(附答案)

关于程序员的脑筋急转弯(附答案)

关于程序员的脑筋急转弯(附答案)1、程序猿最常去的是哪间酒吧?2、程序猿什么情况下会选择离职?3、0是假,1是真,请问这是真还是假?4、你怎样才能知道⼀个计算机科学家是内向还是外向的?5、为什么⼤部分Java程序员都是戴眼镜的?6、怎样区分HTML和HTML5?7、⼗个程序员站成⼀排报数,但最后只有9个,为什么?8、如何⽤⾯向对象的⽅式成为⼀个有钱⼈?9、电脑跟空调有什么共同点?10、有什么事情别⼈看来很奇怪但在程序员眼中却很平常?11、有3位SQL(注意是拟⼈⼿法)⾛进了⼀间NoSQL的酒吧,但很快他们就出来了,为什么?12、对于程序员来说,换⼀个灯泡要多长时间?13、如果⽤⼀种“类”来形容⼥性,请忌讳使⽤什么?14、为什么程序员总是分不清万圣节和圣诞节?15、程序员和⾮程序员之间有啥区别?16、⼀位程序员沐浴,但却死在浴室⾥,为什么?17、杀死⼀只蟑螂需要多少个程序员?18、⽤⼗根指头可以数多⼤的数字?19、为什么说学C的⼈最⽜B?20、有⼀天,王⼦直接闯进怪兽的巢⽳要杀死怪兽。

当怪兽出现,王⼦将怪兽砍死,但是,却变成了两头怪兽。

于是王⼦⼜将它们砍死,结果却出现了4头怪兽。

王⼦再砍,结果出现了16头怪兽……就这样⼀直砍,当砍死128头怪兽的时候,出现了256头怪兽……王⼦⼼想:“我去,咋没完没了。

”但是,当王⼦将最后出现的256头怪兽砍死之后,怪兽就真的死了,为什么?21、程序员眼中的世界只有10种⼈,为什么?答案:1、Foo Bar2、在他⽆法获取到数组的时候(tips:arrays的发⾳)3、14、外向的计算机科学家在跟你说话的时候会看着你的鞋⼦。

5、因为他们看不清(tips:C#)6、请⽤IE浏览器打开它。

可以打开吗?No。

它是HTML57、因为第⼀个报了“0”8、继承9、当打开窗户的时候他们都变得没有⽤处(tips:windows)10、有个傻⼦(foo)⾛进⼀间酒吧(bar),转了⼀圈,然后说“你好,世界!(Hello world)”11、因为他们找不到桌⼦(tips:table)12、不需花费任何时间,因为这是⼀个硬件问题13、集合类。

程序员面试智力、算法题汇总一

程序员面试智力、算法题汇总一
3、求二进制中 1 的个数
题:对于一个正整数,用二进制表示,求其中 1 的个数 解法一: 思路:我们一般都会想到模 2 操作,余 1 则加 1
int count(int v) {
int num=0; while(v) {
if(v%2 == 1) { num++;
} v /= 2; } return num; } 解法二: 思路:位操作,0x01 和末位 1"与"为 1,和末位 0"与"为 0 int count(int v) { int num=0; while(v) { num += v & 0x01; v >>= 1;
k %= n; while(k) {
int t = arr[n-1]; for(int i = n-1; i > 0; i--)
arr[i] = arr[i-1]; arr[0] = t; k--; } } 复杂度为 O(k*N),0<k<N 有点不符合要求哈哈。。。
解法二:我们来举个例子看看清楚啊 比如 12345abcde,向右移 4 个位置,则移动后变为 bcde12345a,我们看出 bcde 和 12345a 顺序 都保存不变, 所,我们可以这样处理啊。。。 (1)12345a 反转得 a54321; (2) bcde 反转得 edcb,此时数组 a54321edcb; (3)哈哈,看出来了吧,再反转 bcde12345a。 复杂度多少呢 O(N)。 void reverse(int*arr,int begin,int end) {
数为分析例子,以便统一。注:本文写得会比较细节一些,以便于绝大多数人都能看懂,别嫌我罗嗦:) 我 很不确定多少人有耐心看完本文!

智力测试题it大厂(3篇)

智力测试题it大厂(3篇)

第1篇随着互联网和科技行业的迅猛发展,各大IT大厂对于人才的渴求日益增长。

为了选拔出最优秀的候选人,IT大厂往往会设置一系列智力测试题,以考察应聘者的逻辑思维、创新能力、问题解决能力等。

以下是一份针对IT大厂招聘的智力测试题,共有25题,分为五大模块,总字数超过2500字。

模块一:逻辑推理1. 一个人走进一家餐厅,发现餐厅里只有一个服务员。

他问服务员:“请问这里有番茄酱吗?”服务员回答:“没有,但是我们这里有芥末酱。

”这个人失望地走了出去。

请问为什么?2. 有三个开关,对应着三个房间。

你只能进一次房间,怎样确定哪个开关对应哪个房间?3. 一个房间里有五盏灯,其中三盏在同一房间,两盏在另一房间。

你只能打开一扇门,怎样才能确定哪三盏灯在同一房间?4. 有四个房间,每个房间都有不同的颜色:红色、蓝色、绿色和黄色。

每个房间都有一个门,门上分别写着“红色”、“蓝色”、“绿色”和“黄色”。

但是,每个门上都写着两个颜色,且只有一个颜色是正确的。

你只能进一次房间,怎样确定每个门上正确的颜色?5. 一个农夫有三个儿子,他们的年龄分别是3岁、4岁和5岁。

一天,农夫的邻居问他:“你的三个儿子年龄加起来是多少?”农夫回答:“我告诉过你,他们年龄加起来是12岁,但是我忘了告诉你,最小的儿子不会说话。

”请问三个儿子的年龄分别是多少?模块二:数学能力6. 一个人有一堆硬币,硬币的总额是100元。

硬币的面值有1元、5元、10元和20元。

他要用这些硬币凑出50元,一共有几种组合方式?7. 一个班级有20名学生,其中有10名男生和10名女生。

现在要从中选出3名男生和3名女生组成一个小组。

一共有多少种不同的组合方式?8. 一个长方体的长、宽、高分别是6cm、4cm和3cm。

求这个长方体的体积。

9. 一个圆形的半径是5cm,求这个圆的周长。

10. 一个正方形的对角线长度是10cm,求这个正方形的面积。

模块三:创新能力11. 如果你是一位软件工程师,如何设计一个可以自动识别并纠正拼写错误的程序?12. 如何利用大数据技术提高城市的交通流量?13. 请设计一个智能家居系统,包括智能灯泡、智能插座、智能空调等,并说明如何实现它们之间的互联互通。

程序员有趣的面试智力题及答案

程序员有趣的面试智力题及答案

程序员有趣的面试智力题及答案1、考虑一个双人游戏。

游戏在一个圆桌上进行。

每个游戏者都有足够多的硬币。

他们需要在桌子上轮流放置硬币,每次必需且只能放置一枚硬币,要求硬币完全置于桌面内(不能有一部分悬在桌子外面),并且不能与原来放过的硬币重叠。

谁没有地方放置新的硬币,谁就输了。

游戏的先行者还是后行者有必胜策略?这种策略是什么?答案:先行者在桌子中心放置一枚硬币,以后的硬币总是放在与后行者刚才放的地方相对称的位置。

这样,只要后行者能放,先行者一定也有地方放。

先行者必胜。

2、用线性时间和常数附加空间将一篇文章的单词(不是字符)倒序。

答案:先将整篇文章的所有字符逆序(从两头起不断交换位置相对称的字符);然后用同样的办法将每个单词内部的字符逆序。

这样,整篇文章的单词顺序颠倒了,但单词本身又被转回来了。

3、用线性时间和常数附加空间将一个长度为n的字符串向左循环移动m位(例如,"abcdefg"移动3位就变成了"defgabc")。

答案:把字符串切成长为m和n-m的两半。

将这两个部分分别逆序,再对整个字符串逆序。

4、一个矩形蛋糕,蛋糕内部有一块矩形的空洞。

只用一刀,如何将蛋糕切成大小相等的两块?答案:注意到平分矩形面积的线都经过矩形的中心。

过大矩形和空心矩形各自的中心画一条线,这条线显然把两个矩形都分成了一半,它们的差当然也是相等的。

5、一块矩形的巧克力,初始时由N x M个小块组成。

每一次你只能把一块巧克力掰成两个小矩形。

最少需要几次才能把它们掰成N x M块1x1的小巧克力?答案:N x M-1次显然足够了。

这个数目也是必需的,因为每掰一次后当前巧克力的块数只能增加一,把巧克力分成N x M 块当然需要至少掰N x M-1次。

6、如何快速找出一个32位整数的二进制表达里有多少个"1"?用关于"1"的个数的线性时间?答案1(关于数字位数线性):for(n=0;b;b>>=1)if(b& 1)n++;答案2(关于"1"的个数线性):for(n=0;b;n++)b&=b-1;7、一个大小为N的数组,所有数都是不超过N-1的正整数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序员有趣的面试智力题1、考虑一个双人游戏。

游戏在一个圆桌上进行。

每个游戏者都有足够多的硬币。

他们需要在桌子上轮流放置硬币,每次必需且只能放置一枚硬币,要求硬币完全置于桌面内(不能有一部分悬在桌子外面),并且不能与原来放过的硬币重叠。

谁没有地方放置新的硬币,谁就输了。

游戏的先行者还是后行者有必胜策略,这种策略是什么, 答案:先行者在桌子中心放置一枚硬币,以后的硬币总是放在与后行者刚才放的地方相对称的位置。

这样,只要后行者能放,先行者一定也有地方放。

先行者必胜。

2、用线性时间和常数附加空间将一篇文章的单词(不是字符)倒序。

答案:先将整篇文章的所有字符逆序(从两头起不断交换位置相对称的字符);然后用同样的办法将每个单词内部的字符逆序。

这样,整篇文章的单词顺序颠倒了,但单词本身又被转回来了。

3、用线性时间和常数附加空间将一个长度为n的字符串向左循环移动m位(例如,"abcdefg"移动3位就变成了"defgabc")。

答案:把字符串切成长为m和n-m的两半。

将这两个部分分别逆序,再对整个字符串逆序。

4、一个矩形蛋糕,蛋糕内部有一块矩形的空洞。

只用一刀,如何将蛋糕切成大小相等的两块,答案:注意到平分矩形面积的线都经过矩形的中心。

过大矩形和空心矩形各自的中心画一条线,这条线显然把两个矩形都分成了一半,它们的差当然也是相等的。

5、一块矩形的巧克力,初始时由N x M个小块组成。

每一次你只能把一块巧克力掰成两个小矩形。

最少需要几次才能把它们掰成N x M块1x1的小巧克力, 答案:N x M - 1次显然足够了。

这个数目也是必需的,因为每掰一次后当前巧克力的块数只能增加一,把巧克力分成N x M块当然需要至少掰N x M - 1次。

6、如何快速找出一个32位整数的二进制表达里有多少个"1",用关于"1"的个数的线性时间,答案1(关于数字位数线性):for(n=0; b; b >>= 1) if (b & 1) n++;答案2(关于"1"的个数线性):for(n=0; b; n++) b &= b-1;7、一个大小为N的数组,所有数都是不超过N-1的正整数。

用O(N)的时间找出重复的那个数(假设只有一个)。

一个大小为N的数组,所有数都是不超过N+1的正整数。

用O(N)的时间找出没有出现过的那个数(假设只有一个)。

答案:计算数组中的所有数的和,再计算出从1到N-1的所有数的和,两者之差即为重复的那个数。

计算数组中的所有数的和,再计算出从1到N+1的所有数的和,两者之差即为缺少的那个数。

8、给出一行C语言表达式,判断给定的整数是否是一个2的幂。

答案:(b & (b-1)) == 09、地球上有多少个点,使得从该点出发向南走一英里,向东走一英里,再向北走一英里之后恰好回到了起点,答案:“北极点”是一个传统的答案,其实这个问题还有其它的答案。

事实上,满足要求的点有无穷多个。

所有距离南极点1 + 1/(2π)英里的地方都是满足要求的,向南走一英里后到达距离南极点1/(2π)的地方,向东走一英里后正好绕行纬度圈一周,再向北走原路返回到起点。

事实上,这仍然不是满足要求的全部点。

距离南极点1 + 1/(2kπ)的地方都是可以的,其中k可以是任意一个正整数。

10、A、B两人分别在两座岛上。

B生病了,A有B所需要的药。

C有一艘小船和一个可以上锁的箱子。

C愿意在A和B之间运东西,但东西只能放在箱子里。

只要箱子没被上锁,C都会偷走箱子里的东西,不管箱子里有什么。

如果A和B各自有一把锁和只能开自己那把锁的钥匙,A应该如何把东西安全递交给B, 答案:A把药放进箱子,用自己的锁把箱子锁上。

B拿到箱子后,再在箱子上加一把自己的锁。

箱子运回A后,A取下自己的锁。

箱子再运到B手中时,B取下自己的锁,获得药物。

11、一对夫妇邀请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的人就是女主人了。

12、两个机器人,初始时位于数轴上的不同位置。

给这两个机器人输入一段相同的程序,使得这两个机器人保证可以相遇。

程序只能包含“左移n个单位”、“右移n个单位”,条件判断语句If,循环语句while,以及两个返回Boolean 值的函数“在自己的起点处”和“在对方的起点处”。

你不能使用其它的变量和计数器。

答案:两个机器人同时开始以单位速度右移,直到一个机器人走到另外一个机器人的起点处。

然后,该机器人以双倍速度追赶对方。

程序如下。

while(!at_other_robots_start) {move_right 1}while(true) {move_right 2}13、如果叫你从下面两种游戏中选择一种,你选择哪一种,为什么, a. 写下一句话。

如果这句话为真,你将获得10美元;如果这句话为假,你获得的金钱将少于10美元或多于10美元(但不能恰好为10美元)。

b. 写下一句话。

不管这句话的真假,你都会得到多于10美元的钱。

答案:选择第一种游戏,并写下“我既不会得到10美元,也不会得到10000000美元”。

14、你在一幢100层大楼下,有21根电线线头标有数字1..21。

这些电线一直延伸到大楼楼顶,楼顶的线头处标有字母A..U。

你不知道下面的数字和上面的字母的对应关系。

你有一个电池,一个灯泡,和许多很短的电线。

如何只上下楼一次就能确定电线线头的对应关系, 答案:在下面把2,3连在一起,把4到6全连在一起,把7到10全连在一起,等等,这样你就把电线分成了6个“等价类”,大小分别为1, 2, 3, 4, 5, 6。

然后到楼顶,测出哪根线和其它所有电线都不相连,哪些线和另外一根相连,哪些线和另外两根相连,等等,从而确定出字母A..U各属于哪个等价类。

现在,把每个等价类中的第一个字母连在一起,形成一个大小为6的新等价类;再把后5个等价类中的第二个字母连在一起,形成一个大小为5的新等价类;以此类推。

回到楼下,把新的等价类区别出来。

这样,你就知道了每个数字对应了哪一个原等价类的第几个字母,从而解决问题。

15、某种药方要求非常严格,你每天需要同时服用A、B两种药片各一颗,不能多也不能少。

这种药非常贵,你不希望有任何一点的浪费。

一天,你打开装药片A 的药瓶,倒出一粒药片放在手心;然后打开另一个药瓶,但不小心倒出了两粒药片。

现在,你手心上有一颗药片A,两颗药片B,并且你无法区别哪个是A,哪个是 B。

你如何才能严格遵循药方服用药片,并且不能有任何的浪费, 答案:把手上的三片药各自切成两半,分成两堆摆放。

再取出一粒药片A,也把它切成两半,然后在每一堆里加上半片的A。

现在,每一堆药片恰好包含两个半片的A和两个半片的B。

一天服用其中一堆即可。

16、你在一个飞船上,飞船上的计算机有n个处理器。

突然,飞船受到外星激光武器的攻击,一些处理器被损坏了。

你知道有超过一半的处理器仍然是好的。

你可以向一个处理器询问另一个处理器是好的还是坏的。

一个好的处理器总是说真话,一个坏的处理器总是说假话。

用n-2次询问找出一个好的处理器。

答案:给处理器从1到n标号。

用符号a->b表示向标号为a的处理器询问处理器b是不是好的。

首先问1->2,如果1说不是,就把他们俩都去掉(去掉了一个好的和一个坏的,则剩下的处理器中好的仍然过半),然后从 3->4开始继续发问。

如果1说2是好的,就继续问2->3,3->4,……直到某一次j说j+1是坏的,把j和j+1去掉,然后问 j-1 -> j+2;或者从j+2 -> j+3开始发问,如果前面已经没有j-1了(之前已经被去掉过了)。

注意到你始终维护着这样一个“链”,前面的每一个处理器都说后面那个是好的。

这条链里的所有处理器要么都是好的,要么都是坏的。

当这条链越来越长,剩下的处理器越来越少时,总有一个时候这条链超过了剩下的处理器的一半,此时可以肯定这条链里的所有处理器都是好的。

或者,越来越多的处理器都被去掉了,链的长度依旧为0,而最后只剩下一个或两个处理器没被问过,那他们一定就是好的了。

另外注意到,第一个处理器的好坏从来没被问过,仔细想想你会发现最后一个处理器的好坏也不可能被问到(一旦链长超过剩余处理器的一半,或者最后没被去掉的就只剩这一个了时,你就不问了),因此询问次数不会超过n-2。

17、一个圆盘被涂上了黑白二色,两种颜色各占一个半圆。

圆盘以一个未知的速度、按一个未知的方向旋转。

你有一种特殊的相机可以让你即时观察到圆上的一个点的颜色。

你需要多少个相机才能确定圆盘旋转的方向,答案:你可以把两个相机放在圆盘上相近的两点,然后观察哪个点先变色。

事实上,只需要一个相机就够了。

控制相机绕圆盘中心顺时针移动,观察颜色多久变一次;然后让相机以相同的速度逆时针绕着圆盘中心移动,再次观察变色的频率。

可以断定,变色频率较慢的那一次,相机的转动方向是和圆盘相同的。

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,2,3,4,5B组:1,2,3,4,5C组:1,2,3,4,5D组:1,2,3,4,5E组:1,2,3,4,5从现在所得到的信息,我们可以知道哪些马已经被排除在3名以外。

相关文档
最新文档