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

    文章

    4599

    浏览量

    92617

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

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

收藏 人收藏

    评论

    相关推荐

    【「从算法到电路—数字芯片算法的电路实现」阅读体验】+内容简介

    内容简介这是一本深入解读基础算法及其电路设计,以打通算法研发到数字IC设计的实现屏障,以及指导芯片设计工程师从底层掌握复杂电路设计与优化方法为目标的专业技术书。任何芯片(如WiFi芯片、5G芯片
    发表于 11-21 17:14

    【「从算法到电路—数字芯片算法的电路实现」阅读体验】+介绍基础硬件算法模块

    作为嵌入式开发者往往比较关注硬件和软件的协调。本书介绍了除法器,信号发生器,滤波器,分频器等基本算法的电路实现,虽然都是基础内容,但是也是最常用到的基本模块。 随着逆全球化趋势的出现,过去的研发
    发表于 11-21 17:05

    【「从算法到电路—数字芯片算法的电路实现」阅读体验】+一本介绍基础硬件算法模块实现的好书

    作为嵌入式开发者往往比较关注硬件和软件的协调。本书介绍了除法器,信号发生器,滤波器,分频器等基本算法的电路实现,虽然都是基础内容,但是也是最常用到的基本模块,本书的内容比较对本人胃口。 我们先来
    发表于 11-20 13:42

    Pure path studio内能否自己创建一个component,来实现特定的算法,例如LMS算法

    TLV320AIC3254EVM-K评估模块, Pure path studio软件开发环境。 问题:1.Pure path studio 内能否自己创建一个component,来实现特定的算法
    发表于 11-01 08:25

    位移传感器在火车轨道上的应用

    火车轨道是铁路交通系统的重要组成部分,监测和控制其安全运行至关重要。在火车轨道的管理和维护中,位移传感器发挥着重要作用。这些传感器将机械位移转化为电信号,实现对轨道变形和位移的准确测量和监测。
    的头像 发表于 10-09 15:56 158次阅读

    名单公布!【书籍评测活动NO.46】从算法到电路 | 数字芯片算法的电路实现

    :elecfans123)领取书籍进行评测,如在5个工作日内未联系,视为放弃本次试用评测资格! 《从算法到电路——数字芯片算法的电路实现》 是一本深入解读基础算法及其电路设计,以打通
    发表于 10-09 13:43

    C加密算法实现

    电子发烧友网站提供《C加密算法实现.pdf》资料免费下载
    发表于 09-20 11:10 1次下载
    C加密<b class='flag-5'>算法</b>的<b class='flag-5'>实现</b>

    激光跟踪仪在火车轨道检测中的应用

    一、背景火车作为中国境内的一种交通运输形式,是国家的重要基础设施和大众化的交通工具,在中国综合交通运输体系中处于骨干地位。随着技术发展,我国火车的运行速度也不断提升,对轨道的稳定运行提出了新要求
    的头像 发表于 09-15 08:03 234次阅读
    激光跟踪仪在<b class='flag-5'>火车</b>轨道检测中的应用

    行业智能化的“火车头效应”,由星河AI金融网络启动

    星河AI金融网络“通车时刻”,听见行业智能化的“火车头”轰鸣
    的头像 发表于 08-23 09:15 2423次阅读
    行业智能化的“<b class='flag-5'>火车</b>头效应”,由星河AI金融网络启动

    FPGA能实现什么样的算法

    FPGA功能如此强大,请问用FPGA能实现或者比较适合实现什么样的算法
    发表于 05-26 20:18

    Camera算法集成实现指南

    最常见的双摄算法是双摄景深算法或者叫双摄背景虚化算法,除此之外,也有彩色+黑白用于增强夜拍效果的双摄算法。单帧算法和多帧
    的头像 发表于 01-25 15:12 1723次阅读

    简单分析火车的供电示意图

    不知你注意没有,火车的用电都是用一根电线,并不是和家庭用的电一样是两根电线。都知道电器要工作必须有两根电线才行,这样才能够构成一个回路,电流才能够流通。
    的头像 发表于 01-03 11:08 1910次阅读
    简单分析<b class='flag-5'>火车</b>的供电示意图

    浮点LMS算法的FPGA实现

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

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

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

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

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