您的位置:首页 > 其它

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

2017-03-24 11:24 441 查看

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

问题:在一条无限长的跑道上,有N匹马在不同的位置上出发开始赛马。当开始赛马比赛后,所有的马开始以自己的速度一直匀速前进。每匹马的速度都不一样,且全部是同样的均匀随机分布。在比赛中当某匹马追上了前面的某匹马时,被追上的马就出局。 请问按以上的规则比赛无限长的时间后,赛道上剩余的马匹数量的数学期望是多少?
思路:动态规划 DP[N+1] = ( N! + N!/(N!)*DP
)+
(  N! + N!/(N-1!)*DP[N-1] )+
(  N! + N!/(N-2!)*DP[N-2] )+
.....
(  N! + N!/(1!)*DP[1] )+
N!
最后用DP
/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
/getv(n);
cout<<fixed<<setprecision(4)<<ans<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  赛马 dp