飞机选座 --- 一道可用动态规划解决的概率问题
题目
该题是中文网站的 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];}
飞机选座 --- 一道可用动态规划解决的概率问题相关推荐
- 波音737-800座位图哪个好_澳媒一张图揭秘,飞机选座秘诀!经济舱最舒适的位置在这儿...
//前言//: 在澳的华人们对于坐飞机, 一定熟悉得不能再熟悉了, 坐飞机时你坐得舒服吗? 特别是回国一趟的长途飞行, 坐得舒服与否会影响一整天的心情. 最近,澳媒揭秘了: 怎样选到飞机经济舱最舒服的 ...
- 为什么飞机订座是起飞前一天选座,火车是买票的时候就选座了?——产品笔试题
** 问题 生活的痛点 在大家日常出行的时候,有没有遇到过这种情况?买完飞机票付完款,出发前在机场值机的时候发现靠窗的座位没有了的难过:和朋友一起出行,买完火车票发现不是连座又取消订单重新下单的怒气. ...
- 乘飞机选座位的胡思乱想
乘飞机选座是门学问.目前大部分航班都可以用手机值机,顺便可以挑选座位.选座能选择的无非是机身前后位置.左右位置和靠窗还是通道,应该没有人特意选择中间的位置. 纳起来选座要考虑的因素包括: (1) ...
- C++ 简单的飞机乘客选座系统
功能:本飞机共有100个座位,分20排,每排5个位子,编号为A.B.C.D.E, 如10A表示10排A座,A和E靠窗,本系统可让乘客自己选择座号,直到乘客满意为止, 无法满足的话,只能改乘另一个航班. ...
- 首次揭秘!大麦如何应对超大规模高性能选座抢票?
作者| 阿里文娱技术专家恒磊.高级开发工程师新钱 出品 | AI科技大本营(ID:rgznai100) 背景介绍 随着现场娱乐行业的不断发展,各类演出层出不穷,越来越多的演出开启选座购票满足用 户的 ...
- andriod 打造炫酷的电影票在线选座控件,1比1还原淘宝电影在线选座功能
本篇文章已经授权微信公共账号 guolin_blog(郭霖)独家发布 不知道大家有没有跟我一样的感觉,看了那么多的介绍自定义控件原理.事件分发机制的书籍,文章,教程,依然还是不能随心所欲的自定义控件. ...
- 基于微信小程序电影院选座订票系统 计算机毕设源码26840
摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,电影院选座订票系统小程序被用户普遍使用,为方 ...
- 怎么把代码放图片里面进行注入_【5025Bridge V1.0】(三)连接、选座、准备的代码搭建...
(三)连接.选座.准备的代码搭建 [概览]在这篇文章中,我主要使用信号机制实现了服务器和客户端之间的通信,并自己摸索着做出了选座的界面,初步设计并构建了各种按钮之间逻辑.此文多图,纯文字量约10000 ...
- 努比亚手机浏览器 安全证书失效_浏览器提示“该站点安全证书的吊销信息不可用”的解决方法-...
最近有用户遇到在Win10系统下浏览网页时,系统一直会提示安全警报,提示内容为"该站点安全证书的吊销信息不可用.是否继续?",那么该如何解决呢?其实这大部分都是网页和浏览器的一些问 ...
最新文章
- flutter图片识别_Flutter 资源和图片
- UA MATH563 概率论的数学基础 鞅论初步1 条件期望
- 黄了。Google中国版搜索
- php drive mssql,PHP 连接 MSSQL 2005/2008 以UTF8存取 并让ADODB支持的安装设置
- python 廖雪峰_廖雪峰的Python系列教程(20)——高级特性之生成器
- 微信web开发者工具调试
- 大数据财税与python应用_大数据跟python
- WPFのDecorator 、Adorner和AdornerDecorator
- html 文件动态加载.PDI 流程图
- PAT 乙级1014	福尔摩斯的约会(C语言)
- 解决mendeley不能输入中文的情况
- Linux 学习记录
- 关于c# 静态构造函数的说明
- win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建
- 一个简单小说阅读网页html,简单版小说搜索阅读(64位程序)
- 激光雕刻机的位图-GCode转换方法实践
- VOIP语音电话配置
- 测试工程师必备技能之缺陷分析
- Gebru被辞退的背后真相:指出BERT的4大危害,威胁谷歌商业利益
- 做小红书推广快速涨粉的技巧_云媒易