1. 程式人生 > >簡單電梯調度算法

簡單電梯調度算法

完成 git教程 命令 設有 等待 cli 每次 obj 最優

電梯

倉庫地址: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數 用時
initial 85(117) 16 18h

繼續改進中


Pintia

技術分享圖片

簡單電梯調度算法