12306 出票逻辑没那么难吧

2020-01-22 17:10:21 +08:00
 daboq

一辆车算 3000 张票
将每个站点都设置个标志位
0 为未出售 1 为已卖出
出 A-B 的票逻辑:
1.搜索有没有 A-B 标志位都为 0 的行 2.将该行 A-B 所有标志位设为 1

完全没难度啊,多一张票=多插入一行,大家看看这想法对不对
python 测试代码:

zhandian=['南通','如皋','泰州','江都','扬州','滁州北','蚌埠','合肥','庐江','桐城','安庆西','天柱山','太湖','南昌','吉安','信丰','龙川','河源','惠州','东莞东','深圳东']

#三千张票
tickets=[[0 for i in range(len(zhandian))] for x in range(3000)]
def by_ticket(start,end):
    start_index=zhandian.index(start)
    end_index=zhandian.index(end)
    if end_index<=start_index:
        # 站点输入错误
        return -3

    for t in tickets:
        if t[start_index:end_index+1]==[0 for i in range(end_index-start_index+1)]:
            t[start_index:end_index+1]=[1 for i in range(end_index-start_index+1)]
            print('买到座位号{}的票 位置详情:{}'.format(t[0],t))
            return t
    print('无票')
    return -1
6997 次点击
所在节点    编程
62 条回复
AllenHua
2020-09-26 19:12:29 +08:00
@ThirdFlame #60 哈哈 谢谢谢谢
ducks
2021-05-31 00:56:53 +08:00
@iugo 贪婪算法,还有同一个作为,比如有 abcd 4 个站就有 ab,ac,ad,ae,bc,bd,cd 各种组合,这玩意儿记得念高中的时候排列组合阶乘挺烧脑的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/639893

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX