题目1227. 飞机座位分配概率
有 n
位乘客即将登机,飞机正好有 n
个座位。第一位乘客的票丢了,他随便选了一个座位坐下。
剩下的乘客将会:
-
如果他们自己的座位还空着,就坐到自己的座位上,
- 当他们自己的座位被占用时,随机选择其他座位
第 n
位乘客坐在自己的座位上的概率是多少?
示例 1:
输入:n = 1 输出:1.00000 解释:第一个人只会坐在自己的位置上。
提示:
1 <= n <= 10^5
思路
首先,根据“如果剩下的n-1乘客他们自己的座位还空着,就坐到自己的座位上,”分为三种情况。
①第一个人随机坐在了自己的座位,则剩下的乘客都能够坐到自己的位置,即第n位乘客能够坐到自己的位置。
②第一个人随机坐在了第n位乘客的位置,此时第n位乘客不能坐到自己的位置。
③第一个人随机坐在了除了第一位乘客和第二位乘客之外的位置,那么剩下的n-1位乘客坐n-1个位置就等价于原来的n个人坐n个位置的问题。【还没完全理解,好像又理解了】
④其实根据公式、思路来化简,可以得到n>1的情况,概率都是0.5,所以也可以直接返回(double)0.5
代码
class Solution {
public:
double nthPersonGetsNthSeat(int n) {
double result=0;
if(n==1) result=1;
else{
result = (1.0/n)*1 + (1.0/n)*0 + (double)(n-2)/n*nthPersonGetsNthSeat(n-1);
}
return result;
}
};