【发布时间】:2014-12-19 15:42:26
【问题描述】:
单源最短路径。给定一个指定的顶点,计算所有其他节点的最短路径。我知道有 Dijkstra 和 Floyd 算法。但我在想是否有递归的方法来解决它。下面是我的作品
int RecursiveShortestPath(int s,int t)
{
int length;
int tmp;
for (Edge e = G.FirstEdge(s); G.isEdge(s); e = G.NextEdge(e))
{
if (ToVertex(e) = t)
{
length = G.Weight(e);
return length;
}
else if ((tmp = RecursiveShortestPath(ToVertex(e), t)) > 0)
{
length = length + tmp;
return length;
}
}
}
我想计算两个索引顶点之间的最短路径。我正在考虑通过递归和设置临时值来做到这一点,每次检测到一条路径时,我都可以计算长度并覆盖临时值(如果它比当前值短)。问题是当返回到上层时,一个函数调用可以有多个返回(它可能有各种子分支路由),因此外层无法分辨哪个是哪个,最终会变得一团糟。
【问题讨论】:
-
将结果收集到矢量或地图中,或者如果图形可以被扩充,那么就在那里。
-
我认为您的
=应该是==。
标签: c++ data-structures