桶中取黑白球(百度2014面试,编程之美)

原创 2013年12月04日 10:11:43

《编程之美》4.6

问题:

有一个桶,里面有白球和黑球各100个,规则如下:

  1. 每次随机从桶中取出两个球
  2. 如果是两个同色的球,就再放入一个黑球
  3. 如果是两个异色的球,就再放入一个白球

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

 

解法:

刚拿到这个问题,我的第一个想法就是用程序来计算各种情形出现的概率,然后再用递归求出最终的结果,不过可能因为程序存在一个bug,结果一直得到的是一个错误的结果

下面列出作者给出的正确解法,看来思维僵化实在太可怕了!

 

解法一:

我们可一个用一个set(黑球数量,白球数量)来表示桶中的黑球和白球的个数。从桶中取出球后,只可能是下列三种操作:

  1. 取出的是两个黑球,则放回一个黑球:(-2, 0) + (1, 0) = (-1, 0)
  1. 取出的是两个白球,则放回一个黑球:(0, -2) + (1, 0) = (1, -2)
  2. 取出的是一黑一白,则放回一个白球:(-1, -1) + (0, 1) = (-1, 0)

根据上面的规则,我们可以发现:白球的数量变化情况只能是不变或者-2,也就是说,如果是100个白球,白球永远不可能是1个的情况,那么问题的解法就很简单了,就是只剩下黑球的概率为100%

 

解法二:

两个相同的球异或等于0,两个不同的球异或等于1

将黑球赋为0 白球赋为1.

可以作这样的抽象:每次捞出两个数字做一次异或操作,并将所得的结果丢回桶中。

就有可能是0 xor 1 xor 1 ……之类的情况,又因为异或满足结合律,上式可变为:

(0 xor 0 ……xor 0) xor (1 xor 1 ……xor 1)两边都是100个,结果就是0

所以只能是黑球

扩展问题:

1.如果桶中的球分别为99个,那么结果会怎样?

根据异或的结果 最后的球一定是白球

2.如果黑白球的数量不定,结果又会怎样?

a个白球 b个黑球

a为奇数时异或为1,a为偶数时异或为1

b无论奇偶都是0

所以当白球为奇数时,最后一定取出白球,白球为偶数时,最后一定取出黑球(有脑残此时提问:如果全部都是白球怎么办?答案是题目条件拿出2个白球会放入1个黑球的亲。。)

编程之美--4.6 桶中取黑白球

来源:http://blog.csdn.net/hardbrave/article/details/7005652 题目:有一个桶,里面有白球、黑球各100个,人们必须按照以下的规则把球取出来:...

编程之美:第四章 数字之趣 4.6桶中取黑白球

/* 桶中取黑白球: 有一个桶,里面有白球,黑球各有100个,人们按照以下规则把球取出来: 1每次从桶里面拿出两个球 2如果是两个同色的球,那么就放入一个黑球 3如果是两个异色的球,就再放入一个白球 ...

挑战面试编程:单词翻转、高斯公式、魔方矩阵、黑白球、3n+1

题一: 把一字符串如"I love you."变为"you. love I"。 题二: 高斯在上小学时发明了等差数列求和公式:1+2+..+100=5050。现在问题在于给你...

编程之美:黑白球问题

题目:有一个桶,里面有白球、黑球各100个,人们必须按照以下的规则把球取出来: 1、每次从桶里面拿出来两个球; 2、如果是两个同色的球,就再放入一个黑球; 3、如果是两个异色的球,就再放入一个白...

面试题之编程之美 黑白球

黑白球 真言 学无止境,创新无止境,超越无止境。 引言 这是我在编程之美上找的题目,感觉自己有自己的想法,对于书上的解法目前还没有仔...

桶中取黑白球问题

桶中取黑白球问题

桶中取黑白球

题目:

百度2014校园招聘笔试面试汇总

  • 2014年09月03日 17:34
  • 939KB
  • 下载

2014年实习生招聘之百度上海研发中心实习生招聘电话面试—2014/04/18

电话是中午将近两点打来的,问我合不合适进行面试,当时我刚在武汉理工面完爱立信,正在睡觉,我就说不大合适啊,能换个时间吗?其他时间都可以,他回答说那下午5点吧。我说好。 到了下午5点2分的时候,他打来...

2014腾讯、百度、阿里面试经验

本人IT屌丝一枚,毕业4年,5年经验(大四在腾讯实习一年,实习生工资,工作内容同正式员工一样)。非常幸运,先后收到过腾讯、百度和阿里的offer,在这里跟大家分享下经验,同诸君共勉。  本人...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:桶中取黑白球(百度2014面试,编程之美)
举报原因:
原因补充:

(最多只允许输入30个字)