首页 > 代码库 > 最短路径——floyd算法
最短路径——floyd算法
上一篇博文中讲了Dijkstra算法,这次博文要讲解的是floyd算法,其中Dijkstra算法是属于贪心算法,而floyd算法是动态规划的一个算法:
具体的算法如下:
其中一个矩阵是用来存放最短路径的,另外一个矩阵是用来存放前驱顶点的;
#include <iostream> using namespace std; #define Max 5 #define Infinity 65535 void main() { int V[Max][Max]={0,8,32,Infinity,Infinity, 12,0,16,15,Infinity, Infinity,29,0,Infinity,13, Infinity,21,Infinity,0,7, Infinity,Infinity,27,19,0 }; int G[Max][Max]; for(int i=0;i<Max;i++) { for(int j=0;j<Max;j++) { G[i][j]=-1; } } for(int k=0;k<Max;k++) { for(int i=0;i<Max;i++) { for(int j=0;j<Max;j++) { if(V[i][k]+V[k][i]<V[i][j]) { V[i][j]=V[i][k]+V[k][j]; G[i][j]=k; } } } } for(int i=0;i<Max;i++) { for(int j=0;j<Max;j++) { cout<<V[i][j]<<" "; } cout<<endl; } for(int i=0;i<Max;i++) { for(int j=0;j<Max;j++) { cout<<G[i][j]<<" "; } cout<<endl; } }
最短路径——floyd算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。