编程之美:桶中取黑白球

首先是题目概述:

        有一个桶,里边有白球,黑球各100个,必须按照如下规取球:

1、每次从桶里拿出2个球;

2、如果两个是同色的球,就往桶里放入一个黑球;

3、如果两个是异色的球,就再放入一个白球;

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

具体分情况讨论:

1、两个都是黑球,则需要放入1个黑球。及剩下黑白求的数量是(100-2+1,100)->(99,100)。

2、两个都是白球,也是放入1个黑球,剩下黑白球的数量是(100+1,100-2)->(101,98)。

3、一黑一白,则放入1个白球,剩下黑白求的数量是(100-1+1,100-1)->(99,100)。

另一个角度:

书上举得例子是,将球的数量初始化为(2,2),按照上述方法举例推广到(100,100)的情况。

        其实可以换一种方式来看待这个问题,根据上述3种情况的分析,每一次白球减少的数量分别为,0、2、0,及白球减少的数量要么是2,要么不减少,所以按照这个趋势的变化,如果最后只剩下一个球,肯定不可能是白球,所以桶里剩下一球是黑球的概率为100%,剩下白球的概率为0。

扩展:

        如果桶里边放的黑白球数量是(99,99)呢,结果如何?

        可以先考虑原始题目中,都是偶数个数的情况。比如都是(98,98),此时的最终结果为只剩下1个黑球。那么,问题就变成了黑白球数量为(2,1),分情况讨论。

(1)、掏出2个黑球,放回一个黑球,变成(1,1),再掏出两个异色球,放回一个白球,只剩一个白球。

(2)、掏出1黑1白,放回一个白球,则变成(1,1),同(1)的后半部分,只剩一个白球。

所以得出相同的奇数个球,最后只剩白球;相同的偶数个球,剩下的是黑球。

再扩展:

        如果两个球队数量不一定呢,最后怎么做?

有了上边的两种情况,此处可以以少数的那个球为基准,切分为两部分。比如,(56,50)->(50,50)+(6,0),结果变成(1,0)+(6,0)->(7,0)的情况,最后剩1个黑球。其他情况,类似的思路。

参考: 100对黑白球问题的多种思路

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值