原题链接:https://leetcode-cn.com/problems/airplane-seat-assignment-probability/

假设有n个人,即n个座位,当第1个人入座时有三种情况

  1. 坐在第1位,2~n都正常入座
  2. 坐在第n位,2~n-1都正常入座,n坐在第1位
  3. 坐在第2~n-1位,此时后面的座位会受到影响

情况1和情况2出现的概率为1/n,情况3出现的概率为(n-2)/n

对于情况3,假设第1人坐在第2位上,则其实对于第2个人来说,此时问题规模为n-1(1和3 ~ n),其实分析后发现,当2坐在第1位时,3 ~ n都会正常入座,和第1位本来就是2的座位效果相同。那么我们如果把座位1看做本来就是2的座位,那么情况就变成了问题规模为n-1的原问题了,于是有递推式:

f(n)=1/n+(n-2)/n*f(n-1)

由递推式我们可以写出递归代码:

double nthPersonGetsNthSeat(int n) {if(n==1) return 1.0;return 1.0/n+(n-2.0)/n*nthPersonGetsNthSeat(n-1);
}

leetcode算法题--飞机座位分配概率相关推荐

  1. 【LeetCode】1227. 飞机座位分配概率

    一.题目描述 有 n 位乘客即将登机,飞机正好有 n 个座位.第一位乘客的票丢了,他随便选了一个座位坐下. 剩下的乘客将会: 如果他们自己的座位还空着,就坐到自己的座位上, 当他们自己的座位被占用时, ...

  2. Leetcode 1227:飞机座位分配概率

    题目描述 有 n 位乘客即将登机,飞机正好有 n 个座位.第一位乘客的票丢了,他随便选了一个座位坐下. 剩下的乘客将会: 如果他们自己的座位还空着,就坐到自己的座位上, 当他们自己的座位被占用时,随机 ...

  3. Java实现 LeetCode 1227 飞机座位分配概率

    1227. 飞机座位分配概率 有 n 位乘客即将登机,飞机正好有 n 个座位.第一位乘客的票丢了,他随便选了一个座位坐下. 剩下的乘客将会: 如果他们自己的座位还空着,就坐到自己的座位上, 当他们自己 ...

  4. Leetcode-1227. 飞机座位分配概率

    链接 1227. 飞机座位分配概率 题目 有 n 位乘客即将登机,飞机正好有 n 个座位.第一位乘客的票丢了,他随便选了一个座位坐下. 剩下的乘客将会: 如果他们自己的座位还空着,就坐到自己的座位上, ...

  5. LeetCode 1227. 飞机座位分配概率(DP+数学归纳法)

    1. 题目 有 n 位乘客即将登机,飞机正好有 n 个座位.第一位乘客的票丢了,他随便选了一个座位坐下. 剩下的乘客将会: 如果他们自己的座位还空着,就坐到自己的座位上, 当他们自己的座位被占用时,随 ...

  6. 【Java】LeetCode 1227. 飞机座位分配概率——数学好一行解决

    有 n 位乘客即将登机,飞机正好有 n 个座位.第一位乘客的票丢了,他随便选了一个座位坐下. 剩下的乘客将会: 如果他们自己的座位还空着,就坐到自己的座位上, 当他们自己的座位被占用时,随机选择其他座 ...

  7. 【数据结构与算法】之深入解析“飞机座位分配概率”的求解思路与算法示例

    一.题目要求 有 n 位乘客即将登机,飞机正好有 n 个座位.第一位乘客的票丢了,他随便选了一个座位坐下,剩下的乘客将会: 如果他们自己的座位还空着,就坐到自己的座位上: 当他们自己的座位被占用时,随 ...

  8. LeetCode 1227. 飞机座位分配概率

  9. 251、飞机座位分配概率

    题目描述: 有 n 位乘客即将登机,飞机正好有 n 个座位.第一位乘客的票丢了,他随便选了一个座位坐下. 剩下的乘客将会: 如果他们自己的座位还空着,就坐到自己的座位上, 当他们自己的座位被占用时,随 ...

最新文章

  1. 机器学习PAL数据可视化
  2. 完成端口(Completion Port)详解----- By PiggyXP(小猪)
  3. python如何分成两行_python将文本分每两行一组并保存到文件
  4. CCleaner Free
  5. android 底部选项,Android:底部的选项卡
  6. Git工具代码版本管理以及基本使用说明
  7. 1.1.2获取和控制线程状态(Getting and Seeting Thread State)
  8. 写在2017年的总结
  9. 机器学习(Machine Learning)深度学习(Deep Learning)资料
  10. win11toast:python桌面通知工具
  11. opencv调用海康威视摄像头
  12. Java成员变量、局部变量的默认值和初始化
  13. python中assert的用法(简洁明了)
  14. 《软硬结合——从零打造物联网》
  15. 阿里巴巴2015校园招聘面试大礼包
  16. ArduPilot之开源代码Sensor Drivers设计
  17. SpringBoot+Mybatis+Thymeleaf-Build Blog site_2
  18. 《Django By Example》读书笔记 02
  19. IIS 返回405报错解决过程
  20. 【620】【2.2信息交流的模式】

热门文章

  1. python有哪些作用-python能用来做什么?Python都有哪些逆天的功能
  2. python常用模块大全总结-Python 常用模块大全(整理)
  3. python web为什么不火-Python语言为什么这么火?老男孩Python入门培训
  4. monty python-Monty Python
  5. python自动测试p-Python实践60-性能调优之pstats模块
  6. python快速自学方式-Python自学之路 ,自学Python快速入门方法
  7. es中的Coordinator
  8. MyBatis架构设计及源代码分析系列(一):MyBatis架构
  9. windows下netstat的使用
  10. redis为什么使用单线程 ,还那么快,单线程是怎么实现的