题目
该题是中文网站的 LeetCode 的 1227题,题目如下:
思路
自己想的情况还是有欠缺的地方,最后是看题解后总结出来的,记录一下。
思路1:
假设第一位没票的客人先上飞机,整体分3种情况:
-
1.第一位客人选的是他本来应该座的位置,其他人都有票,对号入座即可。
第 n 位乘客坐在自己的座位上的概率是: 1 / n * 1。 -
2.第一位客人选的是第n位客人的位置,这样第n位客人无论无何都座不到自己本来的位置。
第 n 位乘客坐在自己的座位上的概率是: 1 / n * 0。 -
3 第一位客人即没选本来应该的位置,也没选第n位客人应该座的位置。那这种情况下 第2位到第n-1位客人肯定有1个人的位置是被第1位客人座了,设这个人是第i位客人。
那这时第i位客人的选择也会影响到第n位客人是否能做到自己本来的位置,情况也是以上分析的3种情况。
我们可以这样想:
把第i位客人当着这轮的“第1位客人”来看待,整个座位的个数是n-1个。也就是把问题的范围缩小了,由原来的n个人,缩小到现在的n-1人。
先暂且假设知道这时候 “第 i 位乘客坐在自己的座位上的概率” 是dp[n-1]。
所以: 这第3种情况下:第 n 位乘客坐在自己的座位上的概率是ÿ