飞机座位分配概率

题目描述:
有 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];
    }
}

猜你喜欢

转载自blog.csdn.net/qq_42174669/article/details/106174157