首页 新闻 会员 周边 捐助

请教大家一个小逻辑,谢谢。

0
[已解决问题] 解决于 2018-04-27 18:37

比如A要买5个苹果,B要买3个苹果……

一会之后,C打算卖1个苹果,D要卖2个苹果……

那么C的1个应该跟A交易,D的两个也应该跟A交易,处于交易中,A还剩2个需要买,当A的完成之后,再进行B的匹配。

 

这个哪位大神有个人见解呢,我用C#开发的话,是不是该写一个控制台的定时任务呢

一禅·小和尚的主页 一禅·小和尚 | 小虾三级 | 园豆:519
提问于:2018-04-02 10:47
< >
分享
最佳答案
0

我懂你的意思,我觉得无需控制台的定时任务。你用数据结构就可以。

使用两个队列,一个是买苹果,一个是卖苹果。队列是先进先出的原则,一开始A先进队列a,B进队列a,C进队列b,D进队列b,然后C卖给A,C出队列b,这时候b队列的头就是D,D继续卖给A,D再出队列。直到A的完成之后,A出队列a,这个时候B就是队列a的头。

先进先出。想一想,我上面描述的有点乱。

奖励园豆:5
Shendu.CC | 老鸟四级 |园豆:2138 | 2018-04-02 10:52

您说的很清晰,只是我不知道如何用队列。我起码得建立两张表吧。买和卖。

一禅·小和尚 | 园豆:519 (小虾三级) | 2018-04-02 14:29

@一只小小小的菜鸟: 逻辑上使用队列可以解决,不考虑实际应用场景。实际应用中,如果你要把交易的过程或者结果存入数据库中,那么久可以建表,而且也不知道实际应用中,买和卖的数据是怎么获得的,是通过数据库获得,还是通过接口获得,如何能够一个接着一个的输入到程序之中。 队列其实很简单,也有现成的模板类,比如java的queue类 ,简简单单的用几个函数就ok,q.front()取队列头元素,q.pop()队列头元素出队列,q.push()往队列尾插入元素

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-04-02 14:43
其他回答(2)
0

这... 交易所交易系统被称为小逻辑,这一届的学生还是很牛叉的。

如果想让买卖成立的话,时间不是最重要的,价格才是。

A要买的价格和C打算卖的价格不能匹配的话,交易是不成立的。

这是一个多年老股民的经验教训。

爱编程的大叔 | 园豆:30844 (高人七级) | 2018-04-02 10:58

没错,这确实是交易所的逻辑,我看到他这种匹配机制,不知道他是如何实现的,所以打算问问大家,价格不一致问题可以排除,您有什么高见呢

支持(0) 反对(0) 一禅·小和尚 | 园豆:519 (小虾三级) | 2018-04-02 14:28
0

用队列啊,买苹果队列的每个元素含有2个成员(元素标识、还需要的苹果数量),卖苹果类似

Arthurian | 园豆:1123 (小虾三级) | 2018-04-02 11:25

看来我得先百度一下队列的用法,具体还不知道怎么实现呢。

支持(0) 反对(0) 一禅·小和尚 | 园豆:519 (小虾三级) | 2018-04-02 14:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册