Floyd-Warshall算法
如图有1 2 3 4四个城市,之间的路程就是那个数字,路线是单向的,假如说我们现在处于城市1处,然后我们用一个二维数组来表示两个城市之间的距离,eg:a[1][2]表示城市1到城市2之间的距离,也就是2.输入两个数一个表示顶点数,一个表示边的条数。
两个城市之间的距离有长有短,所以说从一个城市到另外一个城市的距离可能没有从一个城市到一个城市再到另外一个城市的距离短,也可以中间有好几个城市。我们先说路程经过城市1的。救赎从城市4到城市3吧,路程是12,如果先从4到1再到3路程就变成了11.那如果我们4123呢,路程就变成了10;用代码如何实现呢?
- `for(k=0;k<n;k++) //n表示顶点个数,k表示中间经过城市k
- `{
- ` for(i=0;i<n;i++)
- ` {
- ` for(j=0;j<n;j++)
- ` {
- ` if(a[i][j]>a[i][k]+a[k][j])
-
a[i][j]=a[i][k]+a[k][i];
-
}
- }
11.}