题目

该题是中文网站的 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 位乘客坐在自己的座位上的概率是: (n-2) / n * dp[n-1]

    所以,最后总的概率就是把以上3种情况的概率加起来即可。

思路2:
  • 一:先看大于 2 个客人时的情况:
    因为题目没有说 n 个客人是以什么要的顺序来上飞机选座位的。
    我们就先让 第 2 位 到 第 n-1 位的客人上飞机,因为他们都是有票的,100% 会做到自己的位置。
    那么就只剩下了 第 1 位 、 第 n 位客人了,就是简化到了只有2个客人的情况,概率是 0.5
  • 二:再看只有 1 个人的情况,概率是 1
  • 三:最后,直接用代码判断返回即可。

代码

    public double nthPersonGetsNthSeat(int n) {// dp 矩阵,不用下标为 0 的位置 。// dp[i] : 代表总共由 i 个客人时,第 i 位乘客坐在自己的座位上的概率为 dp[i] 。double[] dp = new double[n + 1];dp[1] = 1;      // 最基本的情况。for (int i = 2; i < dp.length; i++) {// 第 1 种情况 + 第 3 种情况的概率。  第 2 种情况的概率为 0dp[i] = 1.0 / i + (double) (i - 2) / i * dp[i - 1];}// 直接返回总共 n 个人时的情况下的概率。return dp[n];}

飞机选座 --- 一道可用动态规划解决的概率问题相关推荐

  1. 波音737-800座位图哪个好_澳媒一张图揭秘,飞机选座秘诀!经济舱最舒适的位置在这儿...

    //前言//: 在澳的华人们对于坐飞机, 一定熟悉得不能再熟悉了, 坐飞机时你坐得舒服吗? 特别是回国一趟的长途飞行, 坐得舒服与否会影响一整天的心情. 最近,澳媒揭秘了: 怎样选到飞机经济舱最舒服的 ...

  2. 为什么飞机订座是起飞前一天选座,火车是买票的时候就选座了?——产品笔试题

    ** 问题 生活的痛点 在大家日常出行的时候,有没有遇到过这种情况?买完飞机票付完款,出发前在机场值机的时候发现靠窗的座位没有了的难过:和朋友一起出行,买完火车票发现不是连座又取消订单重新下单的怒气. ...

  3. 乘飞机选座位的胡思乱想

    乘飞机选座是门学问.目前大部分航班都可以用手机值机,顺便可以挑选座位.选座能选择的无非是机身前后位置.左右位置和靠窗还是通道,应该没有人特意选择中间的位置. 纳起来选座要考虑的因素包括: (1)    ...

  4. C++ 简单的飞机乘客选座系统

    功能:本飞机共有100个座位,分20排,每排5个位子,编号为A.B.C.D.E, 如10A表示10排A座,A和E靠窗,本系统可让乘客自己选择座号,直到乘客满意为止, 无法满足的话,只能改乘另一个航班. ...

  5. 首次揭秘!大麦如何应对超大规模高性能选座抢票?

    作者|  阿里文娱技术专家恒磊.高级开发工程师新钱 出品 | AI科技大本营(ID:rgznai100) 背景介绍 随着现场娱乐行业的不断发展,各类演出层出不穷,越来越多的演出开启选座购票满足用 户的 ...

  6. andriod 打造炫酷的电影票在线选座控件,1比1还原淘宝电影在线选座功能

    本篇文章已经授权微信公共账号 guolin_blog(郭霖)独家发布 不知道大家有没有跟我一样的感觉,看了那么多的介绍自定义控件原理.事件分发机制的书籍,文章,教程,依然还是不能随心所欲的自定义控件. ...

  7. 基于微信小程序电影院选座订票系统 计算机毕设源码26840

    摘  要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,电影院选座订票系统小程序被用户普遍使用,为方 ...

  8. 怎么把代码放图片里面进行注入_【5025Bridge V1.0】(三)连接、选座、准备的代码搭建...

    (三)连接.选座.准备的代码搭建 [概览]在这篇文章中,我主要使用信号机制实现了服务器和客户端之间的通信,并自己摸索着做出了选座的界面,初步设计并构建了各种按钮之间逻辑.此文多图,纯文字量约10000 ...

  9. 努比亚手机浏览器 安全证书失效_浏览器提示“该站点安全证书的吊销信息不可用”的解决方法-...

    最近有用户遇到在Win10系统下浏览网页时,系统一直会提示安全警报,提示内容为"该站点安全证书的吊销信息不可用.是否继续?",那么该如何解决呢?其实这大部分都是网页和浏览器的一些问 ...

最新文章

  1. flutter图片识别_Flutter 资源和图片
  2. UA MATH563 概率论的数学基础 鞅论初步1 条件期望
  3. 黄了。Google中国版搜索
  4. php drive mssql,PHP 连接 MSSQL 2005/2008 以UTF8存取 并让ADODB支持的安装设置
  5. python 廖雪峰_廖雪峰的Python系列教程(20)——高级特性之生成器
  6. 微信web开发者工具调试
  7. 大数据财税与python应用_大数据跟python
  8. WPFのDecorator 、Adorner和AdornerDecorator
  9. html 文件动态加载.PDI 流程图
  10. PAT 乙级1014 福尔摩斯的约会(C语言)
  11. 解决mendeley不能输入中文的情况
  12. Linux 学习记录
  13. 关于c# 静态构造函数的说明
  14. win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建
  15. 一个简单小说阅读网页html,简单版小说搜索阅读(64位程序)
  16. 激光雕刻机的位图-GCode转换方法实践
  17. VOIP语音电话配置
  18. 测试工程师必备技能之缺陷分析
  19. Gebru被辞退的背后真相:指出BERT的4大危害,威胁谷歌商业利益
  20. 做小红书推广快速涨粉的技巧_云媒易

热门文章

  1. 云枢子表里放入富文本,富文本里放a标签,点击无法触发事件问题
  2. android 定时器的例子
  3. CP15的寄存器介绍
  4. 计算机主机可以有几块硬盘,系统显示几个硬盘真的代表主机里有几块硬盘吗?...
  5. 【C++】多态 - 虚函数/虚析构函数以及虚函数表
  6. 息屏通知 android,息屏提醒app免费版
  7. Linux下Socket编程中用send发送结构体
  8. 两个小概念 Hot swap和Hot spare
  9. 戴尔13G阵列卡做热备硬盘教程
  10. Django web框架学习之旅(4)