求高人帮设计程序 !!! 分全给你

来源:百度知道 编辑:UC知道 时间:2024/05/15 10:26:38
设计学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。

如果每两个场所都可以有路的话,最短路径就是直线了......

这个去随便找个最短路径算法,都可以解决的。

这不就是要用FOld算法吗,算法如下,可作参考:
void ShortestPath_FLOYD(MGraph G, PathMatrix P[], DistancMatrix &D) {
// 用Floyd算法求有向网G中各对顶点v和w之间的最短路径P[v][w]及其
// 带权长度D[v][w]。若P[v][w][u]为TRUE,则u是从v到w当前求得最
// 短路径上的顶点。
int v,w,u,i;
for (v=0; v<G.vexnum; ++v) // 各对结点之间初始已知路径及距离
for (w=0; w<G.vexnum; ++w) {
D[v][w] = G.arcs[v][w].adj;
for (u=0; u<G.vexnum; ++u) P[v][w][u] = FALSE;
if (D[v][w] < INFINITY) { // 从v到w有直接路径
P[v][w][v] = P[v][w][w] = TRUE;
}//if
}//for
for (u=0; u<G.vexnum; ++u)
for (v=0; v<G.vexnum; ++v)
for (w=0; w<G.vexnum; ++w)
if (D[v][u]+D[u][w] < D[v][w]) { // 从v经u到w的一条路径更短
D[v][w] = D[v][u]+D[u][w];
for (i=0; i<G.vexnum; ++i)
P[v][w][i] =(P[v][u][i] || P[u][w][i]);
}//if
}