题目描述:
有 n 位乘客即将登机,飞机正好有 n 个座位。第一位乘客的票丢了,他随便选了一个座位坐下。
剩下的乘客将会:
如果他们自己的座位还空着,就坐到自己的座位上,
当他们自己的座位被占用时,随机选择其他座位
第 n 位乘客坐在自己的座位上的概率是多少?
思路分析:
1.第一个乘客正确坐到第一个位置,概率为1/n
2.第一个乘客坐到最后一个位置,那么最后一个人永远也坐对不了位置,0
3.第一个乘客坐到除了第一个和最后一个以外的位置,(n-2)/n*dp[n-1]
class Solution {
public double nthPersonGetsNthSeat(int n) {
if(n==1)
return 1;
double[] dp=new double[n+1];
dp[1]=1;
dp[2]=0.5;
for(int i=3;i<=n;i++){
dp[i]=1.0/i+(i-2)*(1.0/i)*dp[i-1];
}
return dp[n];
}
}