寒假作业2.1——编程题

时间:2021-09-08 21:55:45

仓库地址:

有想法但是还没打出来,就说一下我的思路

思路:

想要时间最优,那电梯最好能同时搭载同一个方向的尽可能多的人数。

  • 情况一:
    一个乘客请求往上,在上升过程且还未到目的地时有比他层的另一个乘客也请求往上(方向相同),那么电梯可以到另一个乘客所在的楼层中停留接客,再将两人一同往上接送(让第二个乘客搭顺风车)。
    往下方向亦是如此,多个人往同一方向也是如此。
  • 情况二:
    一个乘客请求往上,在上升过程且还未到目的地时有比他层的另一个乘客也请求往上(方向相同),这时有两种选择:
    1.先接送完第一个乘客后再往下去接送第二个乘客;
    2.先往下接送另一个乘客后一同往上接送两位乘客;
    个人认为应该时第一种选择时间最优,但还未列举数据验证
  • 情况三:
    一个乘客请求往上,在上升过程且还未到目的地时有另一个乘客请求往下(方向相反),那么电梯应送完第一个乘客至目的地再往下/上至第二个乘客所在楼层接送第二个乘客。
  • 情况四:
    时间不重合,按请求时间顺序接送完所有乘客。

输入数据:

第一组 //数据中存在比较多时间重合,需要判断时间请求的先后顺序
0 1 0
5 8 0
10 9 1
20 3 0
26 4 1
第二组 //所有人都在一个楼层上电梯
0 1 0
0 1 0
0 1 0
0 1 0
0 1 0

输出数据:

第一组

  1. 11s时,在10楼,等待11s;
  2. 11s时,在10楼,等待6s;
  3. 22s时,在1楼,等待12s;
  4. 33s时,在10楼,等待13s;
  5. 43s时,在1楼,等待17s;
    等待总和59s;

第二组

  1. 10s时,在10楼,等待10s;
  2. 10s时,在10楼,等待10s;
  3. 10s时,在10楼,等待10s;
  4. 10s时,在10楼,等待10s;
  5. 10s时,在10楼,等待10s;
    等待总和50s;