- 相关推荐
有趣的程序员面试问题
一、如何用一枚硬币等概率地产生一个1到3之间的随机整数?如果这枚硬币是不公正的呢?
答案:如果是公正的硬币,则投掷两次,“正反”为1,“反正”为2,“正正”为3,“反反”重来。
如果是不公正的硬币,注意到出现“正反”和“反正”的概率一样,因此令“正反反正”、“反正正反”、“正反正反”分别为1、2、3,其余情况重来。另一种更妙的办法是,投掷三次硬币,“正反反”为1,“反正反”为2,“反反正”为3,其余情况重来。
二、给一个瞎子52张扑克牌,并告诉他里面恰好有10张牌是正面朝上的。要求这个瞎子把牌分成两堆,使得每堆牌里正面朝上的牌的张数一样多。瞎子应该怎么做?
程序员看过来,10个精彩的智力问题!0
答案:把扑克牌分成两堆,一堆10张,一堆42张。然后,把小的那一堆里的所有牌全部翻过来。
三、初始时,两个口袋里各有一个球。把后面的n-2个球依次放入口袋,放进哪个口袋其概率与各口袋已有的球数成正比。这样下来,球数较少的那个口袋平均期望有多少个球?
答案:先取者可以让自己总是取奇数位置上的硬币或者总是取偶数位置上的硬币。数一数是奇数位置上的面值总和多还是偶数位置上的面值总和多,然后总是取这些位置上的硬币就可以了。
四、30枚面值不全相同的硬币摆成一排,甲、乙两个人轮流选择这排硬币的其中一端,并取走最外边的那枚硬币。如果你先取硬币,能保证得到的钱不会比对手少吗?
答案:先取者可以让自己总是取奇数位置上的硬币或者总是取偶数位置上的硬币。数一数是奇数位置上的面值总和多还是偶数位置上的面值总和多,然后总是取这些位置上的硬币就可以了。
五、一个环形轨道上有n个加油站,所有加油站的油量总和正好够车跑一圈。证明,总能找到其中一个加油站,使得初始时油箱为空的汽车从这里出发,能够顺利环行一圈回到起点。
答案:总存在一个加油站,仅用它的油就足够跑到下一个加油站(否则所有加油站的油量加起来将不够全程)。把下一个加油站的所有油都提前搬到这个加油站来,并把油已被搬走的加油站无视掉。在剩下的加油站中继续寻找油量足以到达下个加油站的地方,不断合并加油站,直到只剩一个加油站为止。显然从这里出 发就能顺利跑完全程。
另一种证明方法:先让汽车油箱里装好足够多的油,随便从哪个加油站出发试跑一圈。车每到一个加油站时,记录此时油箱里剩下的油量,然后把那个加油站的油全部装上。试跑完一圈后,检查刚才路上到哪个加油站时剩的油量最少,那么空着油箱从那里出发显然一定能跑完全程。
【有趣的程序员面试问题】相关文章:
程序员面试问题整理版08-07
关于有趣而刁钻的面试问题08-06
程序员面试过程中的经典问题09-24
面试经典问题08-09
程序员面试技巧精选08-04
给程序员的面试技巧09-25
面试的着装问题02-21
面试经典问题回答08-09
厨师面试的问题08-27
关于面试的问题08-23