这部分是对4.6改写代码的总结
1.EventManager
程序用于检测最大重合区间。使用方法为:对每个小时作为一个节点,当有事件开始时,则对该结点位置+1表示这时新增了一个事件,对事件结束时间的节点,对该结点位置-1表示减少了一个事件。则最后通过检查每个节点处数字大小,最大的即是同时运行的事件最多的时候。
首先进行输入判断,将输入限制在合法范围内。
然后将时间节点map中键值对重写,以满足如上要求即可。
本代码的思想如下图所示
2.LowestPrice
计算最低价格,即遍历每一种组合方式,对所有可能的情况进行计算,最小的那个就是要的结果。
先进行输入判断,将输入限制在合法范围内。
然后将递归语句重写即可
本节代码的思想如下图
3.FlightClient/Flight/Plane
本任务与我前面代码中flights判断是否时间资源有重合的方法类似,即遍历存在资源的航班,对时间是否重合进行判断即可。
先进行输入判断,将输入限制在合法范围内。
但是,实验代码给出的while循环为永真,可能出现死循环,因此,我添加了界限,如果循环10000次仍无法找到有效解决办法,则说明无法分配,即失败。
对于时间caendar的判断,源代码函数不正确,使用before和after函数改正
源代码中用==比较字符串,用String.equals代替
源代码中sort函数有问题,用Comparator.Comparing修正
本节代码思想与之前编写flightentry时对资源的判断思想相似,在此便不再放出。