求助 火车售票问题 点击:473 | 回复:20



青岛黄工

    
发表于:2012-03-05 10:19:13
楼主
求助帖5分-已结帖
最近坐火车发现一个问题,以前中途买票上车,如果一个座位上的乘客下车了,那么你坐上去,一般不会再有后来的乘客说这个位子是他的,因为这个位子的票卖出去了,就是到该趟旅程的终点,售票系统对于这个位子都是不为空了,现在不是这样了,一个位子有了起点和终点,售票系统对于到了顾客购买终点后的位子会继续卖有座票,应该是增加了这样的算法,哪位朋友对此类问题的数据结构了解阿,这样的算法应该是怎么做的,最近做一个装料设备,需要这样的算法,期待有朋友解答。


楼主最近还看过



通讯网

  • 精华:11帖
  • 求助:2帖
  • 帖子:464帖 | 10265回
  • 年度积分:0
  • 历史总积分:24711
  • 注册:2004年7月09日
发表于:2012-03-05 10:32:49
1楼
这有什么难的                      

ww19830217

  • 精华:0帖
  • 求助:6帖
  • 帖子:44帖 | 4442回
  • 年度积分:0
  • 历史总积分:14636
  • 注册:2006年12月16日
发表于:2012-03-05 10:52:08
2楼
引用 通讯网 的回复内容:这有什么难的                      



求解?

zzxh789

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 1回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2012年3月05日
发表于:2012-03-05 11:07:43
3楼
不知道,很少关注这些

青岛黄工

  • [版主]
  • 精华:5帖
  • 求助:89帖
  • 帖子:171帖 | 4776回
  • 年度积分:0
  • 历史总积分:24301
  • 注册:2007年4月02日
发表于:2012-03-05 12:44:03
4楼
如果只是几个装料装置,用plc也好编程,现在问题是有不确定多少个装料装置,和电脑中那些线程管理有点类似,不知道有遇到过这个问题的朋友吗?

今生缘

  • [版主]
  • 精华:45帖
  • 求助:23帖
  • 帖子:4907帖 | 10148回
  • 年度积分:4
  • 历史总积分:111194
  • 注册:2011年3月02日
发表于:2012-03-05 14:03:02
5楼

黄工这个问题是这样的,以前每个车有100个座位

火车站就卖100张坐票,无论乘客是从哪下车的,

因此这位旅客下车后这个座位就不会再被卖掉了

现在的售票应该是全国联网的,所有的售票起始点电脑会统计

你买不到终点的票,

那么从你下车的地方同样可以再卖票

这个应该是软件或者系统吧,想用PLC来实现恐怕有难度吧

黄工加油哦

baobao03

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 181回
  • 年度积分:0
  • 历史总积分:1344
  • 注册:2011年8月01日
发表于:2012-03-05 14:28:59
6楼

可以将起点和终点之间设立多个虚点,建立多个分支,通过逻辑关系可直接反映出起点到终点之间的空位,具体如何算我还没有想好。

szjry20110101

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 26回
  • 年度积分:0
  • 历史总积分:274
  • 注册:2012年2月07日
发表于:2012-03-05 14:30:38
7楼

最怕和数学沾边的东西了

zhengchangchun

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 388回
  • 年度积分:0
  • 历史总积分:1919
  • 注册:2010年1月20日
发表于:2012-03-05 14:44:23
8楼

这个用数列来做比较容易,打个比喻

首先比如允许卖1张通票,他有n个站位,那么就给个数列是n位的数,

允许的第二张起始位为n+1位开始

允许的第n张就是n*【n-1】+1位开始

申请的数据列全置为1

然后是买票,出一张票就先和数列中数据比较,如果该数列与对应该票的位都是1,那么允许卖出,同时对该数列数据对应卖出的票的站位清0,第二张票优先于卖出的数列比较,合适就可以出余下站位票,否者申请新数列,不允许申请就是票卖完了。以上逻辑还不够完美,最好加一个优化,就是找出剩余位和该票最合适的冒泡比较法。难!

bhdxzgp

  • 精华:8帖
  • 求助:10帖
  • 帖子:197帖 | 5451回
  • 年度积分:0
  • 历史总积分:21613
  • 注册:2006年4月16日
发表于:2012-03-05 14:59:03
9楼
这种算法很历害啊!学习啊!!!!

zhengchangchun

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 388回
  • 年度积分:0
  • 历史总积分:1919
  • 注册:2010年1月20日
发表于:2012-03-05 15:01:20
10楼

直观的看法,比如有32个站,第一个1代表走得站位,最后一个1代表下车,现在可以卖2张通票

11111111 11111111 11111111 11111111

11111111 11111111 11111111 11111111

现在买一张票

11111111 11111110 00000000 00000000

1余位是

00000000 00000001 11111111 11111111

第二张是

11111111 11111111 00000000 00000000

2余位是

余位是

00000000 00000000 11111111 11111111

现在来了个人买第三张票

00000000 00000000 01111111 11111111

把第三张票和第一第二张余位求与,结果等于第三张票数据就满足可卖,现在把第三张票反向

11111111 11111111 10000000 0000000

该结果与第一第二张余位在求与,第一个留2个1,第二个留1个1,留下数位最少的就最满足,很明显接在第二张下面更合适。

 

 

 

zhengchangchun

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 388回
  • 年度积分:0
  • 历史总积分:1919
  • 注册:2010年1月20日
发表于:2012-03-05 15:19:54
11楼

当然如果这站下,马上另一个上,铁路系统就可以满载运行了,不过签于火车票不能更改,始终还是会出现空座位的。

 

隐约记得某个plc就可以直接知道有几个1的指令,取反和与计算也有,就可以做了。

青岛黄工

  • [版主]
  • 精华:5帖
  • 求助:89帖
  • 帖子:171帖 | 4776回
  • 年度积分:0
  • 历史总积分:24301
  • 注册:2007年4月02日
发表于:2012-03-05 16:37:39
12楼
回复内容:
对:今生缘关于黄工这个问题是这样的,以前每个车有100个座位火车站就卖100张坐票,无论乘客是从哪下车的,因此这位旅客下车后这个座位就不会再被卖掉了现在的售票应该是全国联网的,所有的售票起始点电脑会统计你买不到终点的票,那么从你下车的地方同样可以再卖票这个应该是软件或者系统吧,想用PLC来实现恐怕有难度吧黄工加油哦内容的回复:


在数据结构中,一个节点从父节点可以衍生出子节点,就是这个查询空节点的过程,如果算法搞明白,PLC也可以编程出来。

青岛黄工

  • [版主]
  • 精华:5帖
  • 求助:89帖
  • 帖子:171帖 | 4776回
  • 年度积分:0
  • 历史总积分:24301
  • 注册:2007年4月02日
发表于:2012-03-05 16:40:12
13楼
回复内容:
对:zhengchangchun关于直观的看法,比如有32个站,第一个1代表走得站位,最后一个1代表下车,现在可以卖2张通票11111111 11111111 11111111 1111111111111111 11111111 11111111 11111111现在买一张票11111111 11111110 00000000 000000001余位是00000000 00000001 11111111 11111111第二张是11111111 11111111 00000000 000000002余位是余位是00000000 00000000 11111111 11111111现在来了个人买第三张票00000000 00000000 01111111 11111111把第三张票和第一第二张余位求与,结果等于第三张票数据就满足可卖,现在把第三张票反向11111111 11111111 10000000 0000000该结果与第一第二张余位在求与,第一个留2个1,第二个留1个1,留下数位最少的就最满足,很明显接在第二张下面更合适。   内容的回复:

这个思路很好,用状态位来查找,我看看能不能总结出来一个公式,呵呵

阿水

  • 精华:31帖
  • 求助:399帖
  • 帖子:1801帖 | 22295回
  • 年度积分:2
  • 历史总积分:98539
  • 注册:2007年3月22日
发表于:2012-03-06 08:22:54
14楼
这种算法很历害啊!学习啊!!!! 不过用 PLC 都用 DB 块做数据记忆,出库的再补充吧

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:27帖 | 3065回
  • 年度积分:0
  • 历史总积分:12427
  • 注册:2008年9月18日
发表于:2012-03-06 08:55:16
15楼
引用 阿水 的回复内容:这种算法很历害啊!学习啊!!!! 不过用 PLC 都用 DB 块做数据记忆,出库的再补充吧


其实没仕么的, 做一个链式表 即可, 纪录 上车和下车 的始终 点!

勇者

  • 精华:0帖
  • 求助:1帖
  • 帖子:20帖 | 2756回
  • 年度积分:0
  • 历史总积分:31021
  • 注册:2007年7月13日
发表于:2012-03-06 11:24:18
16楼

只要记录下上车站和下车站,就可以通过数据处理,把票卖出。

玻璃的心

  • 精华:47帖
  • 求助:2帖
  • 帖子:1303帖 | 5801回
  • 年度积分:0
  • 历史总积分:61251
  • 注册:2010年6月11日
发表于:2012-03-06 18:02:36
17楼
这个明显是数据库的问题吧!!!!!!

fiy隐逸

  • 精华:0帖
  • 求助:2帖
  • 帖子:19帖 | 1013回
  • 年度积分:0
  • 历史总积分:4947
  • 注册:2010年7月12日
发表于:2012-03-06 18:31:53
18楼
进来学习下                

297148705f

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 329回
  • 年度积分:0
  • 历史总积分:1947
  • 注册:2010年11月07日
发表于:2012-03-06 19:22:31
19楼

这事有点意思,学习学习,长见识了

郑州李

  • 精华:1帖
  • 求助:4帖
  • 帖子:5帖 | 31回
  • 年度积分:0
  • 历史总积分:230
  • 注册:2011年11月25日
发表于:2012-03-06 22:11:37
20楼

学习中,继续关注。    

SSI ļʱ