0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

抢火车票的算法是怎么实现的

数据分析与开发 来源:程序员小饭 作者:饭米粒 2021-11-17 11:31 次阅读

导读相信大家应该都有抢火车票的经验,每年年底,这都是一场盛宴。然而你有没有想过抢火车票这个算法是怎么实现的呢?其实并没有你想的那么难。

12306抢票算法详解我们以北京到西安这趟高铁为例,比如我的路线就是从北京到西安,车上如果只剩最后一张票了,那么如果有其他人,在北京到西安这条路线之间买任何一站,那么我都是买不了票的,换句话说,对于单个座位来说,必须是起点到终点之间的所有站都没有人买的话,那么才能被算是有票状态。

所以我们可以尝试用redis的bitmap结合上位操作来实现这种场景,以上述北京到西安为例,我们把问题简化:

比如一个火车上只有4个座位;

北京到西安,一共是4站,其实是三个区间的,分别为北京-》石家庄,石家庄-》郑州,郑州-》西安。

首先我们给每个区间构建一个空位图(0为有票,1为无票)。接下来,比如有人买了一张从北京到西安的票。买票这个动作,比如被分配到的座位是编号为1的座位,那么我们直接把北京到西安的所有站,1号座位全部设置为1

接下来又有人买了一张从石家庄到西安的票。比如这次分配的是座位2,那么我们把石家庄到西安的所有票全部设置为1就行了

如何知道还剩几张票?其实解决这个问题很简单,我们直接把上述位图做一个或操作就可以了,因为或操作是必须全部都为0,才为0。

或操作结果有几个0,则说明还剩几张票。

总结其实解决这个问题主要在于位图的构建,因为火车票对于某一个座位来说,只要起点到终点中间某一个区间被占用了(置为1),那么整个座位都是无效的这个特点,很容易想到用或操作的结果来判断买票结果,我们这里只用了4位是为了方便说明问题,实际中应该是火车上有多少座位,位图的长度就应该是多少。

好了,关于抢票算法我们就介绍到这里,你有没有get到呢?或者你有没有更好的实现方法呢?

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4448

    浏览量

    90721

原文标题:12306 抢票算法被曝光了,居然这么简单!

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    浮点LMS算法的FPGA实现

    引言 LMS(最小均方)算法因其收敛速度快及算法实现简单等特点在自适应滤波器、自适应天线阵技术等领域得到了十分广泛的应用。为了发挥算法的最佳性能,必须采用具有大动态范围及运算精度的浮点
    的头像 发表于 12-21 16:40 286次阅读

    SD NAND在火车轨道交通上的应用

    SDNAND和火车轨道交通火车轨道交通需要存储卡来存储监控摄像头捕获的视频和图像数据,和存储乘客信息、车辆地图、娱乐内容和其他与乘客体验相关的数据,也可用于存储车载系统的日志和诊断信息。MK-
    的头像 发表于 12-14 14:31 170次阅读
    SD NAND在<b class='flag-5'>火车</b>轨道交通上的应用

    sigmastudio有没有语音增强的算法或组合实现功能?

    在ADAU1401芯片下,有没有具体实现语音信号增强的算法实现
    发表于 11-29 07:55

    EEMD方法的原理与算法实现步骤

    电子发烧友网站提供《EEMD方法的原理与算法实现步骤.pdf》资料免费下载
    发表于 10-23 11:44 0次下载
    EEMD方法的原理与<b class='flag-5'>算法</b><b class='flag-5'>实现</b>步骤

    密码算法实现的SCA防护

    对于安全控制器而言,密码算法实现与安全性紧密相关,密码算法实现
    的头像 发表于 10-11 09:12 327次阅读

    基于Python实现随机森林算法

    机器学习算法是数据挖掘、数据能力分析和数学建模必不可少的一部分,而随机森林算法和决策树算法是其中较为常用的两种算法,本文将会对随机森林算法
    的头像 发表于 09-21 11:17 626次阅读
    基于Python<b class='flag-5'>实现</b>随机森林<b class='flag-5'>算法</b>

    hash算法在FPGA中的实现(1)

    在FPGA的设计中,尤其是在通信领域,经常会遇到hash算法实现。hash算法在FPGA的设计中,它主要包括2个部分,第一个就是如何选择一个好的hash函数,减少碰撞;第二个就是如何管理hash表。本文不讨论hash
    的头像 发表于 09-07 17:01 570次阅读
    hash<b class='flag-5'>算法</b>在FPGA中的<b class='flag-5'>实现</b>(1)

    C语言程序设计--火车订票系统

    C语言程序设计--火车订票系统
    的头像 发表于 08-01 00:40 462次阅读
    C语言程序设计--<b class='flag-5'>火车</b>订票系统

    AI提取图片里包含的文字信息-解决文字无法复制的痛点

    这个文字识别接口里不仅仅有通用文字识别功能,还支持很多其他功能:比如身份证、驾驶证、保险单、手写文本、火车票,行驶证.......等等功能。还支持用户自定义识别模板,指定需要识别的关键字段,实现用户特定格式图片的自动识别和结构化提取。
    的头像 发表于 07-07 09:37 1021次阅读
    AI提取图片里包含的文字信息-解决文字无法复制的痛点

    算法用RTL实现该怎么做?

    “把算法用RTL实现,怎么做?” 这个问题,对于芯片设计工程师、芯片算法工程师、FPGA工程师来讲,是非常重要的问题。 算法时代来临, 学习 将算法
    的头像 发表于 06-02 15:35 538次阅读

    智慧终端:国产工控机在自助售票机中的应用

    2023年,随着互联网购票成为火车购票的主流,火车票自助售票机逐渐普及。这款自助终端外形类似ATM机,由液晶显示屏、刷卡区、刷证区、发票打印、取票口等模块构成。它能够为乘客提供购票和取票的便捷体验。为了保证自助售票机的可靠性和安全性,需要选择更加稳定、可靠和安全的国产工控
    的头像 发表于 05-31 14:12 345次阅读

    如何使用ESP8266和SPI 3.2\"显示器来显示英国火车的实时火车出发数据?

    该项目使用 ESP8266 (ESP-12F) 和 SPI 3.2\" 显示器来显示英国火车的实时火车出发数据。 国家铁路公司可以开放访问数据库 OpenLDBWS,该数据库用于向英国车站
    发表于 05-22 06:32

    FPGA实现PID控制算法

    相信大家对于PID控制算法,都不感到陌生了,平衡车就是靠它平衡起来的,还有飞控的平衡算法也是它,以及FOC中的闭环控制中也是用的它,它不仅简单,而且易于理解。那么本篇文章将简要介绍一下算法的原理,然后带大家使用FPGA来
    的头像 发表于 05-19 16:40 1169次阅读
    FPGA<b class='flag-5'>实现</b>PID控制<b class='flag-5'>算法</b>

    TI电机控制算法里面的SVPWM原理及编程实现算法

    TI电机控制算法里面的SVPWM原理及编程实现算法对研究SVPWM,电机控制有很大的帮助
    发表于 05-15 17:11 9次下载

    SPFA 算法实现原理及其应用

    。因此,我们需要添加一个计数器,记录每个点进队列的次数。当一个点进队列的次数超过图中节点个数时,就可以判定存在负环。 2、代码详解 以下是使用Java实现 SPFA算法的代码,其中Graph类表示有向
    发表于 04-29 12:43