电梯算法问题_第1页
电梯算法问题_第2页
电梯算法问题_第3页
电梯算法问题_第4页
电梯算法问题_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

某栋写字楼 6 层 有 1 部电梯 编写一个电梯仿真程序 A 考虑如下条件 1 每层楼都有上行和下行两个按键 2 电梯一开始停在 1 层 3 电梯可以容纳 8 个人 4 乘坐电梯的客人的请求频率 时间间隔和到达楼层是随机的 5 电梯的上下一层需要 1 秒 6 电梯空间有限 同时只能容纳一定数量的客人 如果已经达到人数额度 电梯将不理会任何请求 7 不考虑客人请求当前楼层和不请求楼层的情况 8 电梯的响应延迟为 0 比如 电梯往 3 楼上行 3 楼的客人在电梯到达 3 楼之前按上行键 程序有权调 度电梯在 3 楼开门 9 电梯的开关门时间和客人上下电梯时间为 0 匀速运行 10 电梯调度算法不能预读尚未发生的请求 比如在 10 秒的时候电梯无法预知 11 秒时某层客人的请求 11 客人请求发生在整数秒 B 目标 1 在运送所有客人到达目标楼层的前提下电梯的总行程尽可能小 2 设计一个接口 实现调度算法的可替换性 比如 通过重新实现该接口可以使系统使用其它算法 C 输入和输出 输入 input txt 客人的请求序列 格式为到达时间 所在楼层 请求楼层 假设该输入是按照时间递增的 比如 input txt 1 2 3 2 3 1 在 1 秒的时候有客人请求从 2 层到 3 层 2 秒的时候有客人请求从 3 层到 1 层 输出 设计一种简单实用的输出可以清晰地反映电梯的运转情况 include include using std cout using std cin using std endl struct floor int to floor next struct Node int up int down floor downto floor upto int ren class lift private int current int toward int person int rch person 7 public enum null up down lift current 1 toward null person 0 for int i 1 i 7 i rch person i 0 int how person return person int return toward return toward void set current void set toward Node int return current return current void insert reach int x void out reach void show cout Now is in current floor the direction is toward there are person howlongtime test time ren 0 lift lift1 int from to floor nt floor ch Node layer 7 srand time 0 for int i 1 i 7 i layer i up 0 layer i down 0 layer i upto NULL layer i downto NULL for int i 0 i howlongtime i lift1 out reach if lift1 how person lift1 set toward layer if lift1 return toward if lift1 return toward up rch layer lift1 return current upto ch rch Node while lift1 how person 8 if front upto front up ch rch rch rch next ren delete ch front upto rch else rch layer lift1 return current downto ch rch Node while lift1 how person 8 if front downto front down ch rch rch rch next ren delete ch front downto rch while havepeople from rand 6 1 to rand 6 1 while from to to rand 6 1 cout Time i from to to nt next NULL if layer from downto NULL layer from downto nt else floor p layer from downto while p next NULL p p next p next nt ren else if from to nt next NULL if layer from upto NULL layer from upto nt else floor p layer from upto while p next NULL p p next p next nt ren lift1 set current bool havepeople return rand 6 1 3 void lift insert reach int x rch person x person void lift out reach person rch person current rch person current 0 void lift set current if toward up current else if toward down current void lift set toward Node layer if ren 0 int i if toward 1 toward 2 int k 1 int t int j if toward 1 i 6 t current else if toward 2 i 1 t current for i t i i k if i 0 j i else j i if layer j up layer j down 0 return if t0 return else toward up return else if layer current up 0 return else toward down return else f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论