来自苹果、谷歌、微软等知名公司六道有趣智力面试题(转自ACM之家)

说明:

  1.NO.3答案不止一种

  2.NO.5的完美负载均衡思想值得深入学习

NO.1

有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。

NO.2

有个8×8棋盘,其中对角的角落上,两个方格被切掉了。给定31块多米诺骨牌,一块骨牌恰好可以覆盖两个方格。用这31块骨牌能否盖住整个棋盘?请证明你的答案(提供范例,或证明为什么不可能)。

NO.3

有两个水壶,容量分别为5夸脱(美制:1夸脱=0.946升,英制:1夸脱=1.136升)和3夸脱,若水的供应不限量(但没有量杯),怎么用这两个水壶得到刚好4夸脱的水?注意,这两个水壶呈不规则形状,无法精准地装满“半壶”水。

思路:

  可以先把3夸脱装满,倒入5夸脱。再把3夸脱装满,倒入5夸脱使5夸脱装满,这时3夸脱还剩1夸脱。把装满的5夸脱倒掉,把3夸脱中剩的1夸脱倒进5夸脱。再将3夸脱装满并倒进5夸脱即可。

NO.4

有个岛上住着一群人,有一天来了个游客,定了一条奇怪的规矩:所有蓝眼睛的人都必须尽快离开这个岛。每晚8点会有一个航班离岛。每个人都看得见别人眼睛的颜色,但不知道自己的(别人也不可以告知)。此外,他们不知道岛上到底有多少人是蓝眼睛的,只知道至少有一个人的眼睛是蓝色的。所有蓝眼睛的人要花几天才能离开这个岛?

NO.5

有栋建筑物高100层。若从第N层或更高的楼层扔下来,鸡蛋就会破掉。若从第N层以下的楼层扔下来则不会破掉。给你2个鸡蛋,请找出N,并要求最差情况下扔鸡蛋的次数为最少。

NO.6

走廊上有100个关上的储物柜。有个人先是将100个柜子全都打开。接着,每数两个柜子关上一个。然后,在第三轮时,再每隔两个就切换第三个柜子的开关状态(也就是将关上的柜子打开,将打开的关上)。照此规律反复操作100次,在第i轮,这个人会每数i个就切换第i个柜子的状态。当第100轮经过走廊时,只切换第100个柜子的开关状态,此时有几个柜子是开着的?

  这个问题可以写段程序跑一下来看结果如何

 

 1 #include<iostream>
 2 using namespace std;
 3 void main()
 4 {
 5     int a[101]={0};
 6     for(int i=1;i<=100;i++)
 7         for(int j=i;j<=100;j++)
 8             if(j%i==0)
 9                 a[j]=(a[j]==0)?1:0;
10     for(int i=1;i<=100;i++)
11         if(a[i]!=0)
12             cout<<i<<" ";
13 }    

 

 

 

答案链接:http://www.acmerblog.com/interview-2-1549/

题目链接:http://www.acmerblog.com/interview-1545/

posted @ 2014-01-02 13:04  anthozoan77  阅读(425)  评论(0编辑  收藏  举报