这次结对作业我的搭档是程志。这次考验的是我们的阅读代码能力、算法能力、编程能力、合作能力、DEBUG能力。所以,这次的任务比较重,但是这些任务对于1个人来说很重,对于两个人来说还好啦。二人同心 ,其利断金。只要我们发挥1+1>2的水平,问题总是会被解决的。
对于队友的评价
我的队友程志,他为人很好,谦逊礼貌,有着极强的洞察力,对于BUG比较敏感,算法想的也比较全面,唯一的缺点是有时过于淡定。
这次的作业,经过我俩的集体讨论,大体的思路大概是这样的:因为这个作业比较难,所以想要一下完成是不可能的。虽然老师提供了一个傻瓜算法,但是这个算法还非常不具有代表性,与我们要写的算法有很大不同,许多的属性都没有用到。所以基本上还是从头写起。但是写的过程,我偏向于由浅及深,先自己也写个傻瓜算法,熟悉所有的接口,然后慢慢细化算法。这样即使有BUG,也比较好对比发现出来。但是这也有个缺陷就是前期的傻瓜算法与后期的精细算法思路很不一样,代码还得从头写。
我们最后的精细算法是这样的,对每个电梯建立一个这个电梯的请求列表,然后在处理一个请求时,比如让1号电梯从1楼到16楼,对于这个过程的每一刻,我们都会统计所有的请求,如果其中有请求是向上的,而且在我们的路程之中,我们会听到那层,带上他。比如有请求在5层要上行到12,有请求在10层要上行到17层,那么我们在从1层到16层的过程中,会在5层停一次,在10层停一次,在12层停,在16层停,在17层停,电梯里的人下完了,这个电梯再去接受其他的请求。
UML图
关于最后的结果
我们的程序
passenger1.xml 平均77.45 S
passenger2.xml 平均418.986 S
passenger3.xml 平均736.886 S
PS:在跑passenger2.xml时算法要运行18分钟,在跑passenger3.xml是算法要运行3分钟,老师要有耐心呀。(算法算18分钟,1000个人,平均一个人才算了1秒钟而已,这与等电梯的几百秒比起来微不足道)