求最短路径,用pascal写的dp

来源:百度知道 编辑:UC知道 时间:2024/06/07 16:08:00
要源程序

ms没有dp求最短路径的把
你是不是要dfs啊?
不过dfs做不是很好
ms需要加A*
最短路径的算法一般有:
Floyd(全局)
Dijkstra(单源)
Bellman-Ford(单源)
SPFA(单源)

就是Floyd 的最短路径 你自己去网上搜下 一下是关键代码
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
if( map[i][k] != maxint && map[k][j] != maxint )
if( map[i][k] + map[k][j] < map[i][j] )
map[i][j] = map[i][k] + map[k][j];
}

/* maxint 为极大值 表示不连通 By Ping ^.^ */

囧...我所知道的是...dp只能求有相且无回路的图的最短路。每个节点纪录最小值就o了

是图的最短路径吗?建议还是用深度优先搜索,用dp比较麻烦,有的题用dp反而不如深搜