简单电梯调度算法

电梯

仓库地址:Click-me

题目:

一栋10层的大楼(楼层编号1-10),设有一台无限载重的电梯,初始时电梯停在1层。电梯移动1层的耗时为1,在某一层停靠的耗时为1(时间初始为0)。为了使得乘客等待的时间(电梯在目的层的停靠时刻 - 乘客发出请求时刻)总和最小,请你编写一个程序来进行电梯调度。

输入有5个请求,每个请求一行,格式为请求时刻 起始楼层数 去往方向,其中方向为0代表向上去往10层,为1代表向下去往1层。
输出每次对应的决策,每一行的输出格式为xx时,停靠在x楼。其中,“xx时刻”指的是在某层楼停靠的时刻,且不算入在该层的停靠时间。如:

  1. 当0时刻时,电梯此时在1层,输入有0 1 0,那么电梯从1层接客(1s)前往10层(9s),应输出10时,停靠在10楼(1+9=10)。此时,该乘客等待时间为(10-0=)10。
  2. 当0时刻,电梯此时在1层,输入有0 2 0,那么电梯从1层前往2层(1s),接上乘客(1s),前往10层(8s),应输出10时,停靠在10楼(1+1+8=10)。此时,该乘客等待时间为(10-0=)10s。

最后输出完成5个请求(所有乘客都到达目的地)后,各乘客的等待时间总和。

请自己设计5组测试用例,且具有一定代表性,用以验证程序是否是最小耗时。

编程语言选择C或C++都可以,但需要符合编码规范,且必须要有注释。要求在github上建立一个仓库,将本次作业代码提交到该仓库,并在博客开头给出仓库地址。注意:commit信息要遵守一定的git规范(可参看:git commit 规范指南),git必须使用命令行操作,不要使用github图形界面(可参看:廖雪峰Git教程)。

看完问题开始写,直接冲着最优,码了六七十行,果断放弃,我还年轻,我不想掉头发?
咨询了学姐还是决定从最简单的开始开始吧
提交的跟我们日常单部电梯运行的算法比较类似(不能预知请求)
就是判断接下来的时间路径上是否有人可以搭顺风车,最大的通病是,电梯在2~9层并不会掉头
因为对象的概念和用法并不是很了解,所以用了结构体来实现乘客的数据管理。
最终提交代码:

version行数debug数用时
initial85(117)1610h

继续改进中


Pintia

1240

寒假学习计划链接

转载于:https://www.cnblogs.com/elis/p/8438829.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值