zoukankan      html  css  js  c++  java
  • 来自苹果、谷歌、微软等知名公司六道有趣智力面试题(转自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/

  • 相关阅读:
    LeetCode 876. 链表的中间结点
    顺序表的定义及其相关基本操作
    LeetCode 206. 反转链表
    LeetCode 111. 二叉树的最小深度
    LeetCode 700. 二叉搜索树中的搜索
    LeetCode 104. 二叉树的最大深度
    LeetCode 908. 最小差值 I
    LeetCode 728. 自除数
    LeetCode 704. 二分查找
    LeetCode 852. 山脉数组的峰顶索引 (二分)
  • 原文地址:https://www.cnblogs.com/anthozoan77/p/3501707.html
Copyright © 2011-2022 走看看