Deadline:2018.02.22 22:00 pmhtml
題目描述基礎:一棟10層的大樓(樓層編號1-10),設有一臺無限載重的電梯,初始時電梯停在1層。電梯移動1層的耗時爲1,在某一層停靠的耗時爲1(時間初始爲0)。爲了使得乘客等待的時間(電梯在目的層的停靠時刻 - 乘客發出請求時刻)總和最小,請你編寫一個程序來進行電梯調度。git
本次做業是在上一次的電梯調度的代碼上進行改善迭代,不只加入新的功能,也對程序的輸入輸出提出了新的要求。github
1、 輸入從文件讀取,輸出是寫入文件。算法
你們在學習 C 語言的時候,應該明白了控制檯程序的輸入和輸出。但文件操做每每是以前的課程中被忽略的一個部分,你們有沒有試過「若是我要將程序的輸出保存下來」、「若是我要從一個文件中得到輸入」這些實操的環節呢?若是沒有,如今是一個再好不過的學習機會,來吧,learning by doing!編程
要求:輸入輸出改爲文件輸入輸出操做。輸入文件的文件名爲 input.txt
裏面保存着輸入樣例,一個輸入爲一行,輸入的格式見做業的第二條要求。編程語言
例如:學習
0 1 5 2 2 5
程序輸出每次對應的決策,每一行的輸出格式爲 xx時,停靠在x樓
。輸出在文件名爲output.txt
的文件中。測試
2、此次的乘客再也不像上一次做業那樣只會去頂樓或者是 1 樓了,如今要使咱們的程序功能更加貼近現實。優化
迭代:乘客會前往任意一層,請修改程序代碼並實現。天然,輸入請求就變爲了:每一個請求一行,格式爲 請求時刻 起始樓層數 去往樓層
。一樣,你們也須要本身構造測試樣例,讓這臺「電梯」儘量好的工做。構造五個輸入樣例,最後輸出完成五個請求(全部乘客都到達目的地)後,各乘客的等待時間總和。輸入輸出的詳細例子能夠參加上一次做業的要求。搜索引擎
編程語言選擇C或C++均可以,但須要符合編碼規範,且必需要有註釋。編碼規範、註釋、git commit 信息,均可以上網搜索寫法,學會合理使用搜索引擎來學習是計算機專業學生的必經之路。
github使用教程參考:http://www.cnblogs.com/schaepher/p/5561193.html
提交一篇新博客,內容能夠包含以下的參考但不只限於:
測試機爲Windows環境,因此提交到Github上的項目均須要創建一個名字爲BIN的文件夾,裏面必須含有可執行文件(以exe爲後綴),相關的依賴庫,以及輸入和輸出文件。請注意如下兩點:
./output.txt
)/ ElevatorProject(工程名字自行指定便可) / main.cpp / elevator.cpp / elevator.h / BIN / Lib.dll (exe運行須要的動態連接庫文件,能夠沒有) / elevator.exe / input.txt / output.txt
你的程序必須能夠在運行時讀取 input.txt
中的數據並生成 output.txt
。方便助教在測試時進行批量測試。
如下思路來自於鄒欣老師:
電梯調度能夠從下面兩個出發點簡化:
1)先實現一個 「公共汽車」 bus mode, 電梯每一個樓層都停,開門,上下乘客,關門,而後繼續
2) 再實現一個 「出租車」 taxi mode, 電梯一旦接到一個乘客,就直接把乘客送到目的地,途中再也不響應其餘乘客的需求。
讓同窗從這兩個極端調度模式出發, 計算它們運行的效率。 而後再作比較符合實際的調度算法。
沒法想出更優解的同窗能夠實現這兩個簡單思路,在博客中貼出本身的程序的構建,優化和思考過程,也算完成做業,但若是隻完成最簡單的思路沒有繼續優化的話會酌情扣分。
本次做業代碼及隨筆做業皆不得抄襲。遲交5天內扣5分,不交0分,抄襲倒扣20分。
因爲助教、老師精力有限,手動複製粘貼你們的博客連接、github主頁、項目地址,一個個幫你們編譯代碼確定是不現實的,因此要規定各類格式(好比在博客下面回覆本身的連接、第三次做業的文件目錄格式等),而後交給爬蟲來完成自動化測試,再由助教覈對一遍數據確保無誤。不注意格式,或者忘了填上連接,你可能不是故意的,而是無意之舉,但這無疑要加大助教的工做量。這一次做業的文件目錄層次、文件名稱的命名務必請你們細心認真,如有錯誤的會酌情扣分。舒適提示:在下學期結束前儘可能不要更改github用戶名,由於已經爬取了你們的github主頁地址。