1.實現一個地鐵出行路線規劃命令行程序java
2.設計自定義地鐵文件,存儲並讀取地鐵線路。web
支持採用參數 -map 做爲標誌,來獲取對應的自定義地鐵文件,例如: 算法
java subway -map subway.txt
數據結構
3.輸出特定地鐵線路。學習
支持採用參數 -a 來指定地鐵線路,採用參數 -o 來輸出到指定文件station.txt,例如:測試
java subway -a 1號線 -map subway.txt -o station.txt
優化
4.根據起點終點站點,輸出最短路線並輸出。編碼
支持採用參數 -b 來指定出發地與目的地,例如:spa
java subway -b 洪湖裏 復興路 -map subway.txt -o routine.txt
命令行
5.對於錯誤的輸入,在保證程序不報錯的狀況下,正確輸出錯誤緣由。
考慮到讀取文件易於編輯,直接採用最簡單的存儲方式,每行第一個字符串爲線路名稱,後面跟着的字符串爲從起點至終點的每個站點
例如:
1號線 劉園 西橫堤 ... ... 雙橋河
... ... ... ...
... ... ... ...
... ... ... ...
9號線 天津站 大王莊... ...東海路
由於通常地鐵線路圖屬於稀疏圖,使用鄰接表存儲,由於涉及換乘,不一樣線路間還存在重合路徑,兩站之間的通路可能屬於多個線路,故在鄰接表中,除了存儲該節點相連的節點外,還要存儲該條邊屬於的地鐵線路。
較爲簡單的最短路算法,使用優先隊列優化的dijkstra算法便可實現最短路徑的規劃,以通過站點爲第一優先,換成站點爲第二優先便可。對於每一個站點,僅考慮其第一次出隊,便可處理不一樣線路路線重合的問題。
ps。。。看到題目中輸出形式,我感受問題很大啊,既然是地鐵出行,首先上什麼車都不輸出的話,若是從一個地鐵樞紐站出發,難道還要用戶本身去找幾號線嗎。由此引伸的問題就是,當不一樣線路之間路徑有重合,從在重合路徑上的站點出發,該上那條線路的問題,我以爲既然是地鐵線路推薦,在通過站點相同的狀況下,應該輸出換乘最少的方案。
1.讀取文件不存在或錯誤
2.輸入線路、站點不存在或者不存在地鐵路線知足要求
3.參數錯誤
PSP 2.1 | Personal Software Process Stages | Time |
---|---|---|
Planning | 計劃 | |
· Estimate | · 估計這個任務須要多少時間 | 1h |
Development | 開發 | |
· Analysis | · 需求分析 (包括學習新技術) | 1h |
· Design Spec | · 生成設計文檔 | 1h |
· Design Review | · 設計複審 (和同事審覈設計文檔) | 0.5h |
· Coding Standard | · 代碼規範 (爲目前的開發制定合適的規範) | 1.5h |
· Design | · 具體設計 | 3h |
· Coding | · 具體編碼 | 3h |
· Code Review | · 代碼複審 | 2h |
· Test | · 測試(自我測試,修改代碼,提交修改) | 3h |
Reporting | 報告 | |
· Test Report | · 測試報告 | 1h |
· Size Measurement | · 計算工做量 | 1h |
· Postmortem & Process Improvement Plan | · 過後總結, 並提出過程改進計劃 | 1.5h |
合計 | 18.5h |