:Floyed算法利用了DP思想是一种很简单的算法,不过时间复杂度位O(n^3),可以处理负数,空间复杂度为O(N^2).
还有很多算法这里就不多讲解了,以上一种很常见,也用途较广.
Floyed核心代码如下:
for (int k=1;k<=n;k++)
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
if (a[i][j]>a[i][k]+a[k][j])
a[i][j]=a[i][k]+a[k][j];
注意:k必须是在最外层,不可以放到别的位置.