原文链接:https://blog.csdn.net/chen8766250/article/details/52416195

阿里面试题(车牌摇号问题)

题目大意:由于北京车牌紧张,如果需要车牌,需要在每月中旬进行摇号来获得车牌,获得车牌的概率由下面式子决定 money/100000. (money就是摇号时支付的预约金),如果摇中,与预约金用来买车牌,如果没有摇中,这预约金退回。如果你希望在6个月中摇到车牌,问在规定的时间摇到车牌,最少的期望金额是多少?

这是原题的描述,感觉这题是有问题的,因为无论多少次,概率都不可能是百分之百,只能无限趋近于100%。假设以40%为例,第一次不中概率是60%,第二次还不中概率是36%,第二次还不中概率是0.6*0.6*0.6=21.6%,无论多少次,只能趋近于0,但是不中的概率不会等于0。所以这题感觉改成6次摇到车牌的概率超过90%更为合适。(仅限于文字对题目的描述,不排除有其他限定条件没列出来导致我理解错误)

所以我们改一下题目:

由于北京车牌紧张,如果需要车牌,需要在每月中旬进行摇号来获得车牌,获得车牌的概率由下面式子决定 money/100000. (money就是摇号时支付的预约金),如果摇中,与预约金用来买车牌,如果没有摇中,这预约金退回。如果你希望在6个月中摇到车牌的概率超过90%,问在规定的时间摇到车牌,最少的期望金额是多少?

首先我们明确一个概念,每次预约金是否需要一样?原题描述是不一样的,但是我认为一样更为合适。

比如六次我们出价30000,32000,32000,30000,30000。则最少的预约金是32000。我们如果把30000的那几次改成32000,是否概率会更高呢?那自然是肯定的。所以我认为六次的金额应该是一样的。

所以六次的概率应该是这样的,假设预约金是Y,则六次中的概率是:

第一次:Y/100000

第二次:Y/100000*(100000-Y)/100000

第三次:Y/100000*(100000-Y)/100000*(100000-Y)/100000

第四次:Y/100000*(100000-Y)/100000*(100000-Y)/100000*(100000-Y)/100000

第N次:Y/100000*((100000-Y)/100000)的n-1次方

六次想加的和超过90%即可。

按照这个思路,我们先写一份效率最低的代码进行实现:

  /*** @param inf       上限金额,这里是100000* @param times     次数* @return*/public int getMinPirce(int inf, int times) {List<Integer> list = new ArrayList<>();for (int price = 1; price < inf; price++) {int probability = 0;for (int i = 0; i < times; i++) {int failprobal = 100;for (int k = 0; k < i; k++) {failprobal = failprobal * (inf - price) / inf;//计算前面几次不中的概率}
//                调试用
//                if (price == 50000) {
//                    System.out.println("500000");
//                }int currentprobability = price * 100 / inf * failprobal/100;//因为int类型,所以*100方便运算probability += currentprobability;}if (probability >= 90) {return price}}return -1;}

这样算下来的结果是36000,也就是说最少用36000,就可以实现6次中标概率超90%的目标。

当然,这里列出来的解放时间复杂度很高了,O(n3)了,肯定有很大的优化空间,这个欢迎读者给出更优的解法。

车牌摇号 程序设计题相关推荐

  1. 哈尔滨车牌摇号系统遭遇黑客攻击瘫痪

    今天(6月20日),素有冰城美誉的哈尔滨本应于上午九点开始互联网机动车选号,不料遭黑客攻击,导致系统崩溃.为了防止大量号牌流入非法渠道,哈尔滨市公安交通警察支队接到上级机关通知决定暂缓开通互联网选号系 ...

  2. python练习------京牌车牌摇号

    京牌车牌摇号 import random import stringi = 0 count=0 while i < 3:for j in range(4):car_nums=[] # 存储可供用 ...

  3. WZOI-301车牌摇号系统

    题目描述: 汽车数量的急剧增加,导致城市交通的压力越来越大,许多大城市采取通过摇号方式来发放汽车车牌.在申请人通过资格审核后,车牌摇号系统反馈回一个唯一的编号.每次摇号前,车牌摇号系统需要收集所有本次 ...

  4. Python实现车牌摇号小程序

    文章目录 写在前面 一.需求分析 二.编程思路 三.具体过程 四.完整代码 写在前面   我之前在白嫖各种教程的时候存了不少资料,今天给大家带来一个用Python实现的车牌摇号小程序,希望能够帮助到你 ...

  5. Python实现车牌摇号小程序!5个8不想要就要吗!

    写在前面   我之前在白嫖各种教程的时候存了不少资料,今天给大家带来一个用Python实现的车牌摇号小程序,希望能够帮助到你们~ 一.需求分析   这是我们常见的车牌摇号是的界面 我们要做的主要有以下 ...

  6. 前端初学之利用html,css,js实现车牌摇号程序(一)

    *三语言介绍: *html:**超文本标记语言,常用来设计网页界面 css:用来给网页排版,加属性之类的, js:浏览器脚本语言, 用来做一些数据存储之类的, 三者组合用来实现一些网页内容, 初学练手 ...

  7. 车牌摇号、限行、交通拥堵未来会通通消失?阿里王坚说利用机器智能可以做到

    记者 | 周翔 周一的早晨,营长被北京早高峰的洪流裹挟着来到公司,差点迟到! 众所周知,交通拥堵是很多城市难以解决的痛点.对于帝都群众来说,车牌摇号.限行早已习以为常,聚会迟到的理由如果是堵车的话大家 ...

  8. 杭州车牌摇号73次不中的辛酸史,我用Python找到了原因,然后更无望了

    消失了一周的 Kevin 归来了!本期我们不讲敏感的东西.因为*饭已经吃得很饱了. 讲讲一个朋友摇号(车牌)的辛酸史.以及我如何用 python 的技术(爬虫,数据分析,可视化)帮他找到原因,并让他更 ...

  9. 还在等车牌摇号?其实你可以选择拥有粤港两地车牌!

    在深圳大家基本都见过这种车牌但可能了解的不多,今天就跟大家科普下粤港车牌就是我们常说的"两地牌".根据通关口岸的不同办理条件条件也有不同下面就给你具体说说 FV车牌-适用于内地车 ...

最新文章

  1. 栈溢出原理 小记 基础中的基础~~
  2. iOS下JS与OC互相调用(六)--WKWebView + WebViewJavascriptBridge
  3. SpeedNet: Learning the Speediness in Videos
  4. python3安装mysql模块_Python3.6 下 安装MySql
  5. 【设计模式】基本概念
  6. EndNote批量实现文献标题首字母大写 附最新版endnote下载
  7. java 是否继续操作?代码
  8. 用 Python 实现一个大数据搜索引擎
  9. QString 字符编码
  10. 10. 在constructors内阻止资源泄露
  11. [2018.10.25 T1] 妹子
  12. 最新WingIDE注册破解方法
  13. Choregraphe中NAO机器人如何使用纯python指令盒让机器人说话
  14. 算法系列之十九:用天文方法计算日月合朔(新月)
  15. ai python 自动_Python - AI自动抠图
  16. toupper() 函数
  17. 两行代码引发的血案-代笔司徒老师
  18. linux中清除git记住密码的方法
  19. C++继承继承知识点
  20. CVPR 2023 | 一键去除视频闪烁,该研究提出了一个通用框架

热门文章

  1. 三星手机android版本升级包,三星平板电脑N8000闪存机将Android版本升级到7.1的过程记录...
  2. JAVA 1058:求一元二次方程
  3. 【设计模式】一、是什么,为什么,怎么学
  4. Java Web 网络商城案例演示一、(环境搭建)
  5. 最火爆的人工智能学习基础课程(2021人工智能视觉训练营)
  6. ROS系统MoveIt玩转双臂机器人系列(三)--利用controller控制实际机器人
  7. 创建数据库报错--MySQL server is running with the --super-read-only option
  8. pest分析和swot分析的区别
  9. c++数据结构350、121
  10. 像素是什么,一个像素有多大,像素和分辨率的关系