百度面试题之桶中取球(咖啡罐问题的变形)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012333003/article/details/17262923
时间:2013.12.11

地点:软件大楼211

————————————————————————————————————

一、题目

   一个桶里面有白球、黑球各100个,现在按下述规则取球:
    i 、每次从通里面拿出来两个球;
    ii、如果取出的是两个同色的求,就再放入一个黑球;
    ii、如果取出的是两个异色的求,就再放入一个白球。

   问:最后桶里面只剩下一个黑球的概率是多少?

————————————————————————————————————

二 、思路

  初看题目便面取同色球结果为黑入桶,取异色球结果为白入桶,可联想到数字逻辑中的二进制抑或操作,相同抑或结果为0,不同抑或结果为1。于是可将上述场景抽象为一个类似逻辑问题。

————————————————————————————————————

三、求解

  由上述思路建立这样一个逻辑模型:黑对应二进制1,白对应二进制0,场景为:从含100个1和100个0的文本中任意取两个二进制进行抑或操作,然后将结果放回继续。由于抑或操作符合结合律、交换律,所以显然,这个过程等效于对文本所有二进制进行抑或操作,最后得出一个结果且仅有一个结果那就是1,即剩下黑球的概率为100%。

————————————————————————————————————

四、反思

  在一些看似复杂的场景描述中,我们常常可以提取出相关信息将问题转换为一个我们熟悉的问题,当正确的求解模型建立后,解决问题总是那么简单明了。当然问题的转换环节可能却是难处所在吧。

————————————————————————————————————

五、总结

  这是著名的“咖啡罐”问题,David Gries在Science Of Programming一书中有描述,即:给定一个盛有黑色豆子和白色豆子的咖啡罐以及一大堆“额外”的黑色豆子,重复下面过程,直到仅剩一颗豆子为止。

  从罐中随机选取豆子,若颜色相同,扔掉再放入一颗额外的黑色豆子,若颜色不同,将白色豆子放回,黑色豆子扔掉。

  一样的道理,不管如何罐中白色豆子的奇偶性一直保持不变,若罐中初始状态白色豆子为奇数,那么最后罐中有可能为白,当然也有可能为黑,若初始状态白色豆子为偶,那么,罐中最后一个豆子只可能为黑。







展开阅读全文

输入问题百度面试题

05-26

这是第一题:rn1.水果开会时段 rn 每个百度工程师团队都有一笔还算丰裕的食品经费,足够每天购置多种水果。水果往往下午送达公司前台。前台的姐姐们只要看到同时出现五种或以上的水果,就称之为“水果开会”。rnrnrn从搜索引擎切词的语法角度,只要两种水果的名字中有一个字相同就属于同样的类别。例如“小雪梨”和“大雪梨”是同一种水果,而“核桃”和“水蜜桃”也被认为是同一种水果。尤其要指出的是,如果有三种水果x, y, z同时在前台出现,且x和y是同一种水果,y和z也是同一种水果的时候,x和z在此时也被认为是同一种水果(即使x和z并不包含相同的字)。现在前台的姐姐们想知道,今天是否有“水果开会”——五种或更多的水果同时在前台出现。rnrnrn输入格式rn输入的第一行只有一个整数n,表示购置水果的组数。接下来的n行表示水果的到达时间、取走时间(时间用1200到1900之间的正整数表示,保证取走时间大于到达时间)。剩下的字符串以空格分割每一种水果。如“1400 1600 雪梨 水蜜桃”,表示下午两点到四点(包含两点和四点这两个时间点),雪梨和水蜜桃会在前台等待开会。每种水果名称由不超过十个汉字组成。rnrn输出格式rn输出仅一行,包含一个字符串Yes或No,分别表示今天水果开会与否。 rn 论坛

没有更多推荐了,返回首页