/ticket

Primary LanguageJavaScript

ticket

题干条件:

  1. 用户可以买1~5张票
  2. 系统随机为用户分配座位

假设条件:

  1. 一个用户一次买的票尽量连座
  2. 已卖座位尽量分布均匀

分配逻辑:

  1. 全场搜索剩余座位数,如果小于购票数N,提示仅剩票数,如果还有足够剩余座位,进入步骤2
  2. 在每一排搜索满足购票数N的连号座位分配种数,
    1. 每一排都不满足连号,则提示无连号座位,并且按购票数二分法分配(购票数除以2,然后再走分配逻辑)
    2. 有满足连号,分两种优先级:i) 独占连号的黄金座位(刚好剩余N张连座,两边都没有空位) ii) 普通连号
  3. 优先分配黄金座位
  4. 普通连号分配,
    1. 按每排可选种数占总可选种数分配权重区间
    2. 按权重随机分配到某一排
    3. 在已分配的某一排中,随机分配可选的连号座位