您的位置:首页 > 编程语言

寒假作业2.1——编程题

2018-02-07 20:49 267 查看

仓库地址:

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

思路:

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

情况一:

一个乘客请求往上,在上升过程且还未到目的地时有比他层的另一个乘客也请求往上(方向相同),那么电梯可以到另一个乘客所在的楼层中停留接客,再将两人一同往上接送(让第二个乘客搭顺风车)。

往下方向亦是如此,多个人往同一方向也是如此。

情况二:

一个乘客请求往上,在上升过程且还未到目的地时有比他层的另一个乘客也请求往上(方向相同),这时有两种选择:

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

输出数据:

第一组

11s时,在10楼,等待11s;

11s时,在10楼,等待6s;

22s时,在1楼,等待12s;

33s时,在10楼,等待13s;

43s时,在1楼,等待17s;

等待总和59s;

第二组

10s时,在10楼,等待10s;

10s时,在10楼,等待10s;

10s时,在10楼,等待10s;

10s时,在10楼,等待10s;

10s时,在10楼,等待10s;

等待总和50s;

note:

1.按请求时间排序后数组的顺序和之前不一样 但是输出还是得和之前的顺序是一样的——偷个懒默认输入时按顺序

2.服务第二个及之后乘客的需求时应先判断请求时间时电梯的位置,再按以上罗列的情况来判断电梯走向
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: