Floyd最短路径算法

来源:互联网 发布:青岛网络干部学院app 编辑:程序博客网 时间:2024/04/29 14:26

Floyd 最短路径算法,属于动态规划的的算法,方法巧妙的根据前一个状态的路径,比较两点之间通过其他点的路径和前一个状态进行比较,得到最短路径。


//Floyd shortestPath#include<iostream>using namespace std;void floyd(int a[][4],int n){for (int k = 0; k < n; k++)for(int i=0;i<n;i++)for(int j=0;j<n;j++)a[i][j]=a[i][j]<(a[i][k]+a[k][j])?a[i][j]:a[i][k]+a[k][j];}int main(void){const int MAX_LEN=1000;const int n=4;int a[n][n]={{0,MAX_LEN,3,MAX_LEN},{2,0,MAX_LEN,MAX_LEN},{MAX_LEN,7,0,1},{6,MAX_LEN,MAX_LEN,0}};for(int i=0;i<n;i++){for(int j=0;j<n;j++){cout.width(5);cout<<a[i][j];}cout<<endl;}floyd(a,n);cout<<"***********************"<<endl;for(int i=0;i<n;i++){for(int j=0;j<n;j++){cout.width(5);cout<<a[i][j];}cout<<endl;}}


0 0
原创粉丝点击