程序员面试智力题(1)
面试智力题大全

面试智力题大全面试智力题是助人资源部门用来评估应聘者的智力和思维能力的一种常见方式。
这些问题要求应聘者进行推理和解决问题,并展示出他们的分析能力和创新思维。
面试智力题通常涵盖逻辑推理、数学问题、推断能力、空间想象力和创造力等方面。
下面是一些常见的面试智力题及参考答案:1. 有12枚硬币,其中11枚重量相等,但有一枚比较轻。
请问如何使用天平找出那个轻的硬币?答案:将这12枚硬币平均分成两组,分别放在天平的两端。
将轻的一组取出,再将这6枚硬币分成两组,重复之前的步骤。
最后能够找出轻的硬币。
2. 有两个水桶,一个可以装5升水,另一个可以装3升水。
如何用这两个桶恰好量出4升水?答案:先用5升桶装满水,然后倒入3升桶中,5升桶还剩下2升水。
再把3升桶倒空,将2升水倒入3升桶。
然后将5升桶倒满水,再将3升桶的水倒入5升桶中,此时5升桶中有4升水。
3. 在一张无线长度的公路上,有三个点A、B、C。
从A点到B点的距离是5公里,从B点到C点的距离是7公里。
有两个人从A点同时出发,以恒定的速度前进。
一个人的速度是每小时2公里,另一个人的速度是每小时3公里。
他们会在公路上的哪个点相遇?答案:两个人相遇时,他们在公路上走过的路程之比等于他们的速度之比。
设第一个人走过的距离为5x,第二个人走过的距离为7x。
则5x/(5x+7x) = 2/3,解得x=3。
所以他们会在B点的4公里处相遇。
4. 请问如何用一个老虎、一只绵羊和一颗白菜一起过河?条件是,船只每次只能运送一种物品,并且老虎不能和绵羊一起待在岸边,绵羊不能和白菜一起待在岸边。
答案:步骤如下:第一次船只带绵羊过河,然后回到原岸。
第二次船只带白菜过河,然后把绵羊带回原岸。
第三次船只带老虎过河。
最后一次船只带绵羊过河。
5. 有100瓶药丸,其中99瓶的药丸重量相等,只有一瓶有毒。
给你一个天平,最少需要称量多少次才能找到有毒的药丸?答案:将100瓶药丸平均分成两组,分别放在天平的两端。
面试前智力测试题及答案

面试前智力测试题及答案一、逻辑推理题1. 如果所有的猫都怕水,而Tom是一只猫,那么Tom怕水吗?答案:是的,根据题目条件,Tom作为一只猫,也怕水。
2. 有三个人A、B、C,A说B说谎,B说C说谎,C说A和B都在说谎。
请问谁在说谎?答案:B在说谎。
因为如果A说的是真话,那么B说谎,C说真话,但这与C的话矛盾,因为C说A也在说谎。
如果B说的是真话,那么C 说谎,A说真话,这与A的话一致。
如果C说的是真话,那么A和B都在说谎,这与A和B的话都矛盾。
二、数学问题1. 一个数加上10等于它自己,这个数是多少?答案:0。
因为0 + 10 = 10,而10不等于它自己,所以只有0满足条件。
2. 一个数字乘以3后加上10,再除以5,最后减去2,结果等于这个数字本身,求这个数字。
答案:5。
设这个数字为x,根据题意,我们有 (3x + 10) / 5 - 2 = x。
解这个方程,我们得到x = 5。
三、语言理解题1. 以下哪个成语用来形容一个人做事没有计划,想到什么就做什么?答案:信马由缰。
2. “画蛇添足”这个成语是什么意思?答案:比喻做事多此一举,反而把事情弄糟。
四、常识判断题1. 世界上最深的海沟是什么?答案:马里亚纳海沟。
2. 哪个国家拥有世界上最多的诺贝尔奖获得者?答案:美国。
五、空间想象题1. 如果你有一个立方体,它的每个面都是1平方米,那么这个立方体的体积是多少?答案:1立方米。
因为立方体的体积是其边长的三次方,边长为1米,所以体积是1立方米。
2. 一个房间的长、宽、高分别是6米、4米和3米,这个房间的容积是多少?答案:72立方米。
容积是长、宽、高的乘积,即6米× 4米× 3米 = 72立方米。
六、综合分析题1. 一家公司有100名员工,其中30%是女性,70%是男性。
如果公司决定裁员10%,那么裁员后男性和女性的人数比例是多少?答案:裁员后男性和女性的比例仍然是70%和30%。
程序员智力测试题(3篇)

第1篇一、选择题(每题2分,共20分)1. 以下哪个选项是Java中的基本数据类型?A. StringB. IntegerC. floatD. char2. 下列哪个是Python中的列表推导式?A. list(range(5))B. [i for i in range(5)]C. List(range(5))D. list{i for i in range(5)}3. 在C++中,以下哪个语句可以正确地初始化一个二维数组?A. int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};B. int arr[2][3] = {1, 2, 3, 4, 5, 6};C. int arr[2][3] = {{1, 2}, {3, 4}};D. int arr[2][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};4. 在JavaScript中,以下哪个是全局对象?A. windowB. documentC. consoleD. localStorage5. 以下哪个是SQL中用于创建表的语句?A. CREATE TABLEB. INSERT INTOC. UPDATED. DELETE6. 在JavaScript中,以下哪个是原型链的查找机制?A.原型继承B.函数式继承C.类继承D.对象继承7. 以下哪个是Java中的异常处理机制?A. try-catchB. throwC. throwsD. all of the above8. 以下哪个是HTML5中的标签?A. <div>B. <span>C. <section>D. <footer>9. 在C中,以下哪个是用于声明一个静态成员的修饰符?A. publicB. privateC. staticD. abstract10. 以下哪个是CSS中的选择器?A. classB. idC. tagD. all of the above二、填空题(每题2分,共20分)1. 在Python中,使用 _______ 关键字来定义一个函数。
IT面试智力问题及答案

IT面试智力问题及答案IT面试智力问题及答案1、两柱香问题题目:有两柱不均匀的香,每柱香燃烧完需要1个小时,问:怎样用两柱香切出一个15分钟的时间段?这个题的重点就是怎么切解答:将甲香的一头点着,将乙香的两头点着,当乙香燃烧完时,说明已经过了半个小时,同时也说明甲香也正好燃烧了一半,此时,将甲香的另一头点着,从此时起到甲香完全烧完,正好15分钟。
2、灯管问题在房里有三盏灯,房外有三个开关,在房外看不见房内的情况,你只能进门一次,你用什么方法来区分那个开关控制那一盏灯?解答:打开一盏灯10分钟,关掉,打开第二盏,进去看看哪盏亮,摸摸哪盏热,热的是第一个打开的开关开的,亮的是第二个开关开的,另一个就是第三个。
3、两位盲人问题他们都各自买了两对黑袜和两对白袜,八对袜了的布质、大小完全相同,而每对袜了都有一张商标纸连着。
两位盲人不小心将八对袜了混在一起。
他们每人怎样才能取回黑袜和白袜各两对呢?答案:每一对分开,一人拿一只,因为袜子不分左右脚的;4、果冻问题你有一桶果冻,其中有黄色,绿色,红色三种,闭上眼睛,同时抓取两个果冻。
抓取多少个就可以确定你肯定有两个同一颜色的果冻?答案:2次4个!5、喝啤酒问题假如每3个空啤酒瓶可以换一瓶啤酒,某人买了10瓶啤酒,那么他最多可以喝到多少瓶啤酒?答案:喝完10瓶后用9个空瓶换来3瓶啤酒(喝完后有4个空瓶)喝完这三瓶又可以换到1瓶啤酒(喝完后有2个空瓶),这时他有2个空酒瓶,如果他能向老板先借一个空酒瓶,就凑够了3个空瓶可以换到一瓶啤酒,把这瓶喝完后将空瓶还给老板就可以了。
所以他最多可以喝10+3+1+1=15瓶6、三人住旅馆有三个人去住旅馆,住三间房,每一间房$10元,于是他们一共付给老板$30,第二天,老板觉得三间房只需要$25元就够了于是叫小弟退回$5给三位客人,谁知小弟贪心,只退回每人$1,自己偷偷拿了$2,这样一来便等于那三位客人每人各花了九元,于是三个人一共花了$27,再加上小弟独吞了不$2,总共是$29。
程序员面试智力、算法题汇总一

题:对于一个正整数,用二进制表示,求其中 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篇)

第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.被污染的药丸:题目:你有四个装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染的重量+1。
只称量一次,如何判断哪个罐子的药被污染了?解答:从第一个罐子取1个药丸,从第二个罐子取2个,从第三个罐子取3个,从第四个罐子取4个。
如果所有药丸都没有被污染,则总重量是1+2+3+4=10的倍数。
现在称出的重量如果比10的倍数多几,就说明第几个罐子里的药丸被污染了。
3.鸡蛋与楼层:题目:有栋建筑物高100层。
若从第N层或更高的楼层扔下来,鸡蛋就会破掉。
若从第N层以下的楼层扔下来则不会破掉。
给你两个鸡蛋,你最少需要尝试多少次才能确定N的值?解答:使用二分查找的思想。
从第14层开始扔,如果碎了,则从1到13层逐层尝试;如果没碎,则从27层开始尝试,以此类推。
最坏情况下需要尝试14次。
4.国际象棋棋盘:题目:要求输出国际象棋棋盘。
解答:使用嵌套循环和条件判断来交替打印黑白格。
5.兔子繁殖问题:题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?解答:这是一个斐波那契数列问题,可以使用递归或迭代的方法来求解。
6.水仙花数:题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
解答:遍历100到999之间的所有数,检查是否满足条件。
程序员编程潜力智力题

华为公司2011程序员招聘题目摘录之
---------程序员编程潜力及智力评估
(1)一列火车以15 km/h的速度从北京向广州出发,一列火车同时以20km/h的速度从广州向北京出发,同时,一只小鸟以30km/h 从北京出发,当它遇到广州来火车后往回飞,再次遇到北京来的火车后折回向另一个方向飞,再遇到另一火车再折回,当不能再折回时,小鸟飞了多远的距离。
假定北京到广州距离为s km。
(2)现有一个酒缸有无穷多的酒,另有一个7两和11两的小容器(没有刻度),需要倒出2两酒.
(3)每个飞机的油箱中的油可以飞地球半圈,每个飞机可以把自己的油分给另一个飞机一部分或者全部,但每架飞机必须安全返回,只一个机场(出发点),问,要让一架飞机绕一圈,至少要出动多少架飞机。
(4)经理有三个女儿,三个年龄加起来是13,三个年龄乘起来等于经理的年龄,有个人知道经理的年龄,但他也不知道三个女儿的年龄.然后经理说,只有一个女儿在上学,结果那个人就知道了,请问,三个女儿的年龄分别是多少?
(5)多人站在一起,每人一顶帽子,至少有一顶黑帽子.每人可以看到别人的帽子颜色,但不能看到自己的颜色,如果某人发现自己是戴的黑帽子,打自己一把掌.
按以下实验:
(1)第一次开灯,让大伙互相看,没有声音.关灯.
(2)第二次开灯,让大伙互相看,没有声音.关灯.
(3)第三次开灯,让大伙互相看,很多声音.问,至少有多少顶黑帽子.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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. 一个圆盘被涂上了黑白二色,两种颜色各占一个半圆。
圆盘以一个未知的速度、按一个未知的方向旋转。
你有一种特殊的相机可以让你即时观察到圆上的一个点的颜色。
你需要多少个相机才能确定圆盘旋转的方向?答案:你可以把两个相机放在圆盘上相近的两点,然后观察哪个点先变色。
事实上,只需要一个相机就够了。
控制相机绕圆盘中心顺时针移动,观察颜色多久变一次;然后让相机以相同的速度逆时针绕着圆盘中心移动,再次观察变色的频率。
可以断定,变色频率较慢的那一次,相机的转动方向是和圆盘相同的。
今天考完美国结构语言学,稍微轻松了一些。
我把前几天向大家推荐的网页好好看了一遍,挑选了10个比较精彩的、不是很常见的、本Blog之前没有提过的智力题,并且把它们都整理到了一起,与大家一同分享。
希望大家能够大呼过瘾~1. 给一个瞎子52张扑克牌,并告诉他里面恰好有10张牌是正面朝上的。
要求这个瞎子把牌分成两堆,使得每堆牌里正面朝上的牌的张数一样多。
瞎子应该怎么做?答案:把扑克牌分成两堆,一堆10张,一堆42张。
然后,把小的那一堆里的所有牌全部翻过来。
2. 如何用一枚硬币等概率地产生一个1到3之间的随机整数?如果这枚硬币是不公正的呢?答案:如果是公正的硬币,则投掷两次,“正反”为1,“反正”为2,“正正”为3,“反反”重来。
如果是不公正的硬币,注意到出现“正反”和“反正”的概率一样,因此令“正反反正”、“反正正反”、“正反正反”分别为1、2、3,其余情况重来。