地铁线路最短路径

项目介绍

  • 主要功能

    提供一副地铁线路图,计算指定两站之间最短(最少经过站数)乘车路线;输出指定地铁线路的所有站点。以北京地铁为例,地铁线路信息保存在data.txt中,格式如下:
    地铁线路总数
    线路名1 站名1 站名2 站名3 ...
    线路名2 站名1 站名2 站名3 ...
    线路名3 站名1 站名2 站名3 ......

  • 实现语言
    java

  • 实现算法
    迪杰斯特拉算法(Dijkstra)
    读取所有的地铁线路之后,将地铁信息转化为一个以换乘站为结点、与相邻换乘站的距离(一站为一距离)为边的加权无向图存储在二维数组中。
    查找起始站和目的站所在的路线,如果在同一条路线,则先记录两站之间不换乘的路径。如果该路径上无换乘站,则直接输出该路径。
    如果起始站、目的站本身都是换乘站,则用dijkstra算法求出最短路径并记录换乘次数。
    如果起始站和目的站不都为换乘站,查找它们相邻的换乘站并记录到相邻换乘站的距离,相邻的换乘站可能有多个。以相邻换乘站为起点、终点,用dijkstra算法求出最短路径并记录换乘次数。

  • 输入格式:
    //(提示)请输入起始站:
    用户输入的起始站名
    //(提示)请输入目标站:
    用户输入目的站名
    输出格式:
    总共需要乘坐n站#(包括目的站但不包括起始站)
    起始站(线路名1)……换乘站(线路名1->线路名2)……目的站(线路名)
    线路1->线路2……#输出所有的换乘线路
    //(如果起始站是换乘站,则线路名选择下一站的线路名;如果目的站是换乘站,则线路名选择上一站的线路名)
    //(如果相同站数有多条线路,则输出多条线路)

  • 需求理解

  1. 程序能正确读入地铁线路文件,并处理地铁线路信息
  2. 程序能正确处理输入的起始站和目的站信息
  3. 程序能正确计算出两站之间的最短路径并输出
  • 流程图
posted @ 2020-10-22 10:14  筠青  阅读(184)  评论(0)    收藏  举报