飞机座位分配概率
有 n 位乘客即将登机,飞机正好有 n 个座位。第一位乘客的票丢了,他随便选了一个座位坐下。
剩下的乘客将会:
如果他们自己的座位还空着,就坐到自己的座位上,
当他们自己的座位被占用时,随机选择其他座位
第 n 位乘客坐在自己的座位上的概率是多少?
对于这个题目,我一共写了两种解法。
第一种解法直接用递归暴力求解,在力扣平台上时间可以通过n=22
代码如下
double nthPersonGetsNthSeat(int n){
double p1,p2=0;
int num=n-1;
double a[1000];
int r[1000];
int i=0;
for(i=0;i<1000;i++){
r[i]=0;
}
if(n==2)return 0.5;
if(n==1)return 1;
p1=1/n;
while(num>=1){
p2=p2+nthPersonGetsNthSeat(num);
num--;
}
return p1+(p2*(1)/n);
}
第二种解法,我通过数学推导,发现了规律代码如下:
double nthPersonGetsNthSeat(int n){
double p1=0,p2=0;
int num=n-1;
double l=0;
// double a[100050];
// int r[1000];
int i=0;
//if(n==3) return 0.55;
// a[0]=1;
// a[1]=0.5;
if(n==1)return 1;
else return 0.5;
}