3

我正在尝试打印实现弗洛伊德算法的 python 程序。

n=5
    for k in range(n):
        for j in range(n):
            for i in range(n):
                if A[i][k]+A[k][j]<A[i][j]:
                    A[i][j]=A[i][k]+A[k][j]

我正在尝试以与以下相同的格式打印解决方案:(不包括第一列和第一行)

  0 1 2 3 4
  -----------
0|0 1 4 500 3
1|1 0 2 500 4
2|4 2 0 1   5
3|500 500 1 0 3
4|3 4 5 3   0

500 表示无穷大

有任何想法吗?我希望指数能起到作用。

还有人知道这个算法的数量级吗?

4

1 回答 1

2

你可以用这个。

>>> A = [[0, 1, 4, 500, 3], [1, 0, 2, 500, 4],[4,2,0,1,5],[500,500,1,0,3],[3,4,5,3,0]]
>>> for elem in A:
        print "\t".join(['Inf' if val == 500 else str(val) for val in elem])


0   1   4   Inf 3
1   0   2   Inf 4
4   2   0   1   5
Inf Inf 1   0   3
3   4   5   3   0
于 2013-07-28T16:18:16.960 回答