2017网易游戏雷火盘古实习生招聘笔试(4)赛马

来源:互联网 发布:软件生命周期模型比较 编辑:程序博客网 时间:2024/05/20 17:39

2017网易游戏雷火盘古实习生招聘笔试(4)赛马

问题:在一条无限长的跑道上,有N匹马在不同的位置上出发开始赛马。当开始赛马比赛后,所有的马开始以自己的速度一直匀速前进。每匹马的速度都不一样,且全部是同样的均匀随机分布。在比赛中当某匹马追上了前面的某匹马时,被追上的马就出局。 请问按以上的规则比赛无限长的时间后,赛道上剩余的马匹数量的数学期望是多少?思路:动态规划 DP[N+1] = ( N! + N!/(N!)*DP[N] )+                      (  N! + N!/(N-1!)*DP[N-1] )+                        (  N! + N!/(N-2!)*DP[N-2] )+                          .....                       (  N! + N!/(1!)*DP[1] )+                          N!最后用DP[N]/N! 就是数学期望了     
#include<iostream>#include<vector>#include<iomanip>using namespace std;int getv(int n){    int sum = 1;    for(int i = 1;i <= n ;i++)        sum  = sum*i;    return sum;}int C(int x,int y){    if(x == 0) return 0;    return getv(y)/getv(x);}int main(){    int n;    cin>> n;    vector<int> v(n+1,0);    v[0] = 0;    v[1] = 1;    v[2] = 3;    for(int i = 3; i <= n ;i++){        int t = 0;        for(int j = i ;j >= 1;j--){            t += v[ j - 1]*C(j-1,i-1) +getv(i-1);        }        v[i] = t;    }        float ans = (float)v[n]/getv(n);    cout<<fixed<<setprecision(4)<<ans<<endl;    return 0;} 
1 0
原创粉丝点击