我不确定如何在以下程序中实现Floyd的算法。它必须打印一个表示此图on page 466的5x5数组,并包含一个计数器,用于在算法执行时打印比较总数 - 每次执行“if”结构都算作一次比较。
有谁知道如何开始这个程序?我不知道该如何开始。
答案 0 :(得分:3)
以下纯粹是您链接的伪代码的转录。我什么都没改变。
for k in range(n):
for i in range(n):
for j in range(n):
if A[i][k]+A[k][j]<A[i][j]:
A[i][j]=A[i][k]+A[k][j]
答案 1 :(得分:2)
从您关联的网页翻译,
k=0
while (k <= n-1):
i=0
while (i<=n-1):
j=0
while(j<=n-1):
if(A[i,k] + A[k,j] < A[i,j]):
A[i,j] = A[i,k] + A[k,j]
j += 1
i += 1
k += 1
NB这是Python的确切翻译。
更好,更多Pythonic代码也是可能的 - 参见,例如5xum的答案
它使用range
函数而不是手动递增循环计数器。
此处A
也是2d矩阵(例如numpy ndarray
)。
查看有关numpy here