捷運站錢怎麼算?

10 瀏覽次數

台北捷運票價,前五公里二十元,之後每三公里增加五元。 程式需計算任意兩站間最短路線及所需最低票價,考量路線轉乘與各站間距數據。

提供建議 0 喜歡次數

捷運站間票價計算

在台北捷運系統中,車資計算方式為:前 5 公里 20 元,每增加 3 公里加收 5 元。為了便利乘客,本文將介紹一個演算法,計算任意兩站間最短路線及最低票價。

演算法

  1. 讀取資料:讀取捷運路線圖和各站間距資料。
  2. 建構圖形:將捷運網路建構為圖形,其中節點為車站,邊為軌道,邊的權重為距離。
  3. 執行 Dijkstra 演算法:從起點站執行 Dijkstra 演算法,找出前往所有其他車站的最短路徑。
  4. 計算票價:根據最短路徑的距離,計算所需的票價。

範例

以下為從忠孝復興站前往淡水站的範例:

  1. 讀取資料:讀取捷運路線圖和各站間距資料,如下:
路線一:淡水線
   - 起點:淡水站
   - 終點:劍潭站
   - 距離:11.2 公里

路線二:紅線
   - 起點:淡水站
   - 終點:南港展覽館站
   - 距離:22.1 公里

路線三:松山線
   - 起點:松山站
   - 終點:南港站
   - 距離:11.8 公里

路線四:信義線
   - 起點:象山站
   - 終點:大安森林公園站
   - 距離:12.9 公里

路線五:環狀線
   - 起點:大橋頭站
   - 終點:十四張站
   - 距離:14.3 公里

各站間距:
   - 淡水站 - 中山國中站:1.5 公里
   - 中山國中站 - 民權西路站:1.2 公里
   - 民權西路站 - 雙連站:1.3 公里
   - 雙連站 - 忠孝復興站:1.1 公里
   - 忠孝復興站 - 國父紀念館站:1.6 公里
   - 國父紀念館站 - 中正紀念堂站:1.4 公里
   - 中正紀念堂站 - 大安站:1.3 公里
   - 大安站 - 台北車站:1.2 公里
  1. 建構圖形:將捷運網路建構為圖形,如下:
忠孝復興站 -- 中山國中站 -- 民權西路站 -- 雙連站 -- 淡水站
忠孝復興站 -- 國父紀念館站 -- 中正紀念堂站 -- 大安站 -- 台北車站
  1. 執行 Dijkstra 演算法:從忠孝復興站執行 Dijkstra 演算法,找出前往所有其他車站的最短路徑:
忠孝復興站 -> 淡水站:忠孝復興站 -> 雙連站 -> 民權西路站 -> 中山國中站 -> 淡水站,距離 6.1 公里
  1. 計算票價:根據最短路徑的距離 6.1 公里,計算所需的票價:
票價 = 20 + ceil((6.1 - 5) / 3) * 5
票價 = 20 + ceil(1.1 / 3) * 5
票價 = 20 + 1 * 5
票價 = 25 元

因此,從忠孝復興站前往淡水站的最短路徑為 6.1 公里,所需的最低票價為 25 元。