第一题是谷歌的算法面试题,前两年用它K掉了很多成名人物。题目如下:
一幢 200 层的大楼,给你两个鸡蛋。如果在第 n 层扔下鸡蛋,鸡蛋不碎,那么从第 n-1 层扔鸡蛋,都不碎。这两只鸡蛋一模一样,不碎的话可以扔无数次。最高从哪层楼扔下时鸡蛋不会碎?问:提出一个策略, 保证能测出鸡蛋恰好会碎的楼层, 并使此策略在最坏情况下所扔次数最少。
第二题也是程序员的一道算法题:
600个人站一排,每次随机杀掉一个奇数位的人,几号最安全?(杀掉一个后,此人后面的人位数均会改变一位)
为了避免大家毫无思路,给大家稍微分析一下这两题的思路。
第一题:第一个鸡蛋用来试探, 只要它从 k 层楼扔下去没碎, 则目标就在[k+1, 200]之间了。
但一旦运气不好碎了, 对于已知的区间, 我们只能用剩下一个鸡蛋从小到大一层层试,因为我们要保证策略必须成功, 不能冒险了。提供一个思路是把200层分十层,每二十层扔一次,那么最差的结果是在200层,所以先第一个鸡蛋是10次碎,第二个20次碎,最差是30次。当然,这不是正确答案,也不是最优解。
第二题:很多人会回答2最安全,因为1不死,2永远不会死。当然,也有人说600。其实2相当于奶妈,1是他的肉盾,600相当于刺客,自带50%闪避,因为前面无论谁死,他都会改变状态。所以,谁最安全呢?
最新评论