1.问题描述:
创建一个至少有15个点的有向网表示的某个旅游景点的导游图。顶点代表景点,类型为字符串(例如,泰山导游图:“天地广场门”,“十八盘”,“冯玉祥墓”,“桃花峪门”,“中天门”,“南天门”,“玉皇顶”等),弧表示两个景点之间可以直达,弧上的权值表示两个景点之间的路程(公里数),弧上还有到达方法的信息(有步行和索道两种)。建立一个游客咨询系统。
2.基本要求
(1)创建图的存储结构。
(2)输入两个景点名,就可以得到从一个景点到达另一个景点的所有简单路径、相应路径的路程公里数、行走的方法(每一段是步行,还是坐索道);
(3)输入两个景点名,就可以得到其最短路径,即:路程最短的行进方法;
3.思路:
图论中建立邻接矩阵、DFS深度优先遍历、迪杰斯特拉算法的简单应用,除DFS略有技巧性外皆为课本上的算法。首先输入景点数和路径数、各景点名、各路径的顶点下标、权值和行进方式构建图的邻接矩阵,运用迪杰斯特拉算法构建最短路(由于每次调用一次迪杰斯特拉算法和打表的算法复杂度都为O(n^3)故直接将每个点到其他点的最短路打表存二维数组名之后取用即可,数组存取复杂度O(1))。输入起点终点信息,DFS遍历输出所有路径和总路程,再输出最短路径。
4.代码及数据: