阿里笔试 -- 小张和姑娘约会
来源:互联网 发布:90后的中年危机 知乎 编辑:程序博客网 时间:2024/06/02 16:39
题目:
小张很多年过年都没有回家了,这次回家父母给他安排了很多个相亲的姑娘,有一个很长的名单,长度为N。父亲负责安排约会,每次随机的选择一个要相亲的对象,母亲负责记录哪些姑娘已经约会过了。直到和所有的姑娘都约会完一遍以后,这个浩大的相亲工程才会结束。这些天父母在吵架,他们之间不会有任何的言语沟通。所以父亲不知道哪些姑娘已经约会过了。因此下次约会的对象很可能是以前已经约会过的。如果小张要把所有的姑娘都约会一遍,那么平均需要约会多少个姑娘?
思路:
这是一道概率题,主要考查数学功底,推出公式后几行代码就可以搞定。如果你熟悉概率论中的“赠券收集问题“,这个问题就迎刃而解了。
- 计算期望值:
假设T 是约会完所有N 个姑娘约会的次数,ti 是在约会了第i−1 个姑娘后,再约会到第i 个(以前没有约会过的)姑娘所花的次数,那么T 和ti 都是随机变量。在约会了i−1 个姑娘后,再约会一个新的姑娘的概率pi=n−i+1n , 所以ti 是几何分布,并且有期望值1pi 。根据期望值的线性性质:E(T)=====E(t1)+E(t2)+⋯+E(tn)1p1+1p2+⋯+1pnnn+nn−1+⋯+n1n(11+12+⋯+1n)nHn
其中Hn 是调和数,根据其近似值可化为:E(T)=nHn=nlnn+γn+12+o(1) , asn→∞ ,其中γ≈0.5772156649 是欧拉-马歇罗常数。
C++代码如下:
#include <iostream>#include <vector>#include <numeric>#include <limits>#include <time.h>using namespace std;/*请完成下面这个函数,实现题目要求的功能*//*当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^ *//******************************开始写代码******************************/double date(int N) { double H = 0; for (int i = 1; i <= N; i++) { H += 1.0 / i; } return N * H;}/******************************结束写代码******************************/int main() { double res; int N; cin >> N; res = date(N); printf("%.4f", res); return 0;}
0 0
- 阿里笔试 -- 小张和姑娘约会
- 阿里笔试和毕业论文
- 小张和小丽
- 老张大张和小张
- 阿里笔试附加题第一小题
- 阿里笔试示例:小猴子摘桃
- 我和阿里的五次“相亲”(或者“约会”)
- 小丽和小张 --- 作者:歪瓜裂枣
- 阿里笔试和视频一面 2017.9
- 阿里笔试
- 阿里笔试
- 小明和小强都是张老师的学生
- 小明和小强都是张老师的学生,张老…
- 阿里云笔试题:正则表达式和有限状态自动机
- 阿里笔试:去重和排序,重新输出Markdown格式
- 小明的约会 oj148
- 张小龙和小程序,到底想要什么
- 阿里云笔试题
- 关键路径
- 工厂方法模式
- 什么情况下使用缓存
- power designer 16.5 使用总结
- 判断一个请求是否为Ajax请求
- 阿里笔试 -- 小张和姑娘约会
- Angular企业级开发-Angular MVC实现
- 抽象工厂模式
- Linux ssh登录命令
- wangeditor使用以及读取本地文件错误解决(思想教训深刻啊)
- 三步破解IntelliJ IDEA2017
- Spring的IOC原理
- 对异步编程的理解
- Android