2017阿里实习生招聘编程题之相亲约会

题目描述: 小张很多年过年都没有回家了。这次回家父母给他安排了很多个相亲的姑娘,有一个很长的名单,长度为N. 父亲安排约会,每次随机选择一个要相亲的对象,母亲则负责记录哪些姑娘已经约会过了。直到和所有的姑娘都约会完一遍以后,这个浩大的相亲工程才会结束。这些天父母在吵架,他们之间不会有任何言语沟通。所以父亲不知道哪些姑娘已经约会过了。因此下次约会的对象很可能是以前已经约会过的。如果小张要把所有的姑娘都约会一遍,那么平均要约会多少个姑娘。

题目分析: 这道题其实思路和又放回随机抽样小球,直到所有的小球都被抽到至少一次,求抽取次数的期望类似。 (类似的题目还有,连续抛硬币,求第一次连续出现n个正面的时候,抛硬币次数的期望)

分析 :假设f(i)表示目前已经相亲了i个不同的姑娘,还要相亲才能把n个姑娘全部相亲完的期望
因为已经相亲了i个不同的姑娘后,在相亲一个姑娘,这个姑娘是这i个人中间的其中一个人的概率是i/n,是另外还没有相亲过的姑娘的概率是(n-i)/n。那么很容易得出, f(i)=inf(i)+ninf(i+1)+1 ,显然f(n)=0, 我们要求f(0)
显然, f(0)=n1+n2+n3+...nn .

//2017阿里实习生招聘编程题之相亲约会
#include<iostream>
using namespace std;
int main()
{
    int n,i;
    cin>>n;
    double sum=0;
    for(i=1;i<=n;i++)
    {
        sum+=double(n)/i;
    }
    cout<<"平均要约会姑娘的个数为:"<<sum<<endl;
    return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值