我使用的是Dijkstra算法,已经按照书上所述求出了各点到起点的最短路径,但为了考虑有多条最短路径的情况,我建立了一个(N-1)*(N-1)的二维数组,一行归一个节点所有,若再有相同长度的路径可用,就将新的“上一个节点”存储在属于它的这一行内。现在的问题是,存储是存储了,要怎样读取呢?人的思维可以轻易知道这条路自己是否走过,在程序里却很难让计算机知道,若要将某条边或某个节点标记为已用,万一下一条路还会绕过这边又怎么办呢?我找不到能让计算机理解的方法,因此来求助,这个问题想了好几天,现在时间已经有点紧了。
PS.有时间复杂度的要求,故删边再遍历的算法不做考虑
两图分别为书上的示范和我自己画来测试的图,书上的pv那一行存储的即为“最短路径中的上一个节点”,我只不过比他多了一个二维数组