算法题目------【一个桶内100个白球,100个黑球,最后一个是黑球的概率是多少?】

今天看到一个有意思的题目,听说是《编程之美》中的一道题,瞬间感觉自己又落后了很多。今天就拿出来分享下我在这道题目的感悟!

原题大意:一个桶内放有100个黑球,100个白球。按照下面的顺序拿出桶内的球:

1.每次拿出2个球;

2.若为同色球则放回一个黑色的球;

3.若为不同色的球则放回一个白球。

我第一眼看到大脑很兴奋,这不就是高中的时候的概率题目吗?然后就提笔开始下面的神算,结果我就不说了。反正是花了挺长时间的。后来翻看的他的答案,我瞬间有种跳楼的感觉。人间只用三言两语就搞定的问题,我花了长篇大论竟然结果是错的。总之我什么都不说了,下面给大家分析下问题的答案:

首先我们看到问题不要蛮干,要先学会分析问题,我们按照他的流程可以得出下面的结果:

1.每次都会拿出一个球,最总桶内就只会剩下一个球。(在这里我们已经有50%的答案了,

下面我就可以把答案得出来)

2.注意在第2、3步的时候,我们其实可以发现白球每次数量的变化是成双或者是0.

所以最后不可能有一只白球落在桶里。(现在我们100%的确定最后是黑球)

对就是这么的简单,这就是区别,就好像我们从A到B本来只有100米,但是你非要绕出1000米的路,可能在现实生活会说你在享受生活的过程,但是我们这是在解决问题,越快解决问题,而且方法越简单,这才是我们最终想要的结果。so,有时候我们需要灵活一些,不要遇到问题把他越搞越复杂。最总你做出呃东西一定是会很快就淘汰掉了。

时间: 2024-08-12 03:34:04

算法题目------【一个桶内100个白球,100个黑球,最后一个是黑球的概率是多少?】的相关文章

一个关于字符串匹配的算法题目

有这样一个算法题目 假设这有一个各种字母组成的字符串,假设这还有另外一个字符串,而且这个字符串里的字母数相对少一些.从算法是讲, 什么方法能最快的查出所有短字符串里的字母在长字符串里都有? 比如,如果是下面两个字符串: String 1: ABCDEFGHLMNOPQRS String 2: DCGSRQPOM 答案是true,所有在string2里的字母string1也都有.如果是下面两个字符串: String 1: ABCDEFGHLMNOPQRS String 2: DCGSRQPOZ 答

几个有意思的算法题目

这两天奔波于参加了两场校招面试,其中有很多非常有意思的算法题目,有一部分甚至都没有找到最优的答案,比较开放的算法设计题目. 其实面试不只是算法题的交流,当中还穿插着各式各样的非技术问题,毫无防备,都不知道如何展示自己了. 看似数学推理的程序设计题: 一个盒子中有100个白球,100个黑球,每次从盒子中不放回的取出两个球,如果取得的两个球是颜色相同,放入一个白球,如果取得的两个球颜色不同,放入一个黑球?最后盒子中剩下一个黑球的概率为多少? 拓展:一个盒子中有m个白球,n个黑球,按照上面的方案,最后

限流算法之漏桶算法、令牌桶算法

昨天CodeReview的时候看到同时使用RateLimiter这个类用作QPS访问限制.学习一下这个类. RateLimiter是Guava的concurrent包下的一个用于限制访问频率的类. 1.限流 每个API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性.即接口也需要安装上保险丝,以防止非预期的请求对系统压力过大而引起的系统瘫痪. 通常的策略就是拒绝多余的访问,或者让多余的访问排队等待服务,或者引流. 如果要准确的控制Q

排序算法四(桶排序)

一.桶排序算法的引入. 之前我们已经说过了计数排序的算法. 这个时候我们如果有这样的一个待排序数据序列: int x[14]={-10, 2, 3, 7, 20, 23, 25, 40, 41, 43,60, 80, 90, 100}; 我们如果按照计数排序的算法,那么待排序数据的范围是:-10 到 100 我们为了实现对于这个数据集的遍历,这个时候需要额外的开辟一个大小为(100- (-10)+ 1)的空间,这个时候的空间复杂度达远远超过我们的预计,也就是这个造成了空间的浪费. 所以我们可以说

常见排序算法导读(11)[桶排序]

上一节讲了基数排序(Radix Sort),这一节介绍桶排序(Bucket Sort or Bin Sort).和基数排序一样,桶排序也是一种分布式排序. 桶排序(Bucket Sort)的基本思想 将待排对象序列按照一定hash算法分发到N个桶中 对每一个桶的待排对象进行排序 从头到尾遍历N个桶,收集所有非空的桶里的有序对象(子序列)组成一个统一的有序对象序列 在每一个桶中,如果采用链式存储的话,1.和2.可以合并在一起操作,也就是在分发的过程中保证每一个桶的对象桶内有序. 例如: 设有5个桶

若干经典基础算法题目练习

练习1,判断是否为素数: // ConsoleAppIsPrime1.cpp : 定义控制台应用程序的入口点. // /* *函数功能:判断一个输入的数是否为素数 *函数原形:bool Prime( int x ) *参数:int x:将要判断的数 *返回值:bool型变量,判断是否是素数 *备注:需要包含头文件<math.h> *日期:2014/11/25 *原创:否 *作者:EbowTang *Email:[email protected] */ #include "stdafx

java常见算法题目

1: JAVA经典算法40题 2: [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 3: 1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... 4: public class exp2{ 5: public static void main(String args[]){ 6: int i=0; 7: for(i=1;i<=20;i++) 8: System.o

PTA数据结构与算法题目集(中文) 7-14

PTA数据结构与算法题目集(中文)  7-14 7-14 电话聊天狂人 (25 分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔. 输出格式: 在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔.如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数. 输入样例: 4 130057

PTA数据结构与算法题目集(中文) 7-27

PTA数据结构与算法题目集(中文)  7-27 7-27 家谱处理 (30 分) 人类学研究对于家族很感兴趣,于是研究人员搜集了一些家族的家谱进行研究.实验中,使用计算机处理家谱.为了实现这个目的,研究人员将家谱转换为文本文件.下面为家谱文本文件的实例: John Robert Frank Andrew Nancy David 家谱文本文件中,每一行包含一个人的名字.第一行中的名字是这个家族最早的祖先.家谱仅包含最早祖先的后代,而他们的丈夫或妻子不出现在家谱中.每个人的子女比父母多缩进2个空格.