enter code here
def prims():
r = 4;
c = 4;
total = 0
matrix = [ [0 for x in range(r)] for y in range(c)]
min = 999
u = 0
v = 0
visited = [None]*4
for i in range(0,4):
visited[i] = 0
for j in range(0,4):
matrix[i][j] = input()
if matrix[i][j]== 0:
matrix[i][j] = 999
visited[0] = 1
for counter in range(0,3):
min = 999
for i in range(0,4):
if visited[i] == 1:
for j in range(0,4):
if visited[j] != 1:
if min > matrix[i][j]:
min = matrix[i][j]
a = u = i
b = v = j
visited[v] = 1
total = total + min
print("edge found :{}->{}:{}".format(u,v,min))
print("The weight of minimum spanning tree is : {}".format(total))
return
prims()
我需要做什么,如果我想要将输入作为文本文件提供给该程序。我创建了一个名为" input.txt"的文件。我把矩阵的输入。任何人都可以帮我解决问题。
input.txt:
0 28 999 999 999 10 999
28 0 16 999 999 999 14
999 16 0 12 999 999 999
999 999 12 0 22 999 18
999 999 999 22 0 25 24
10 999 999 999 25 0 999
999 14 999 18 24 999 999
答案 0 :(得分:2)
以下是从文件中读取的方法
file = open('path of input file')
for line in file.readlines():
print(list(map(int, line.split(' '))))
file.close()
您也可以通过
将其存储到数组中arr = []
file = open('path of input file')
for line in file.readlines():
arr.append(list(map(int, line.split(' '))))
print(arr)
file.close()
输出
[[0,28,999,999,999,10,999],[28,0,16,999,999,999,14],[999,16,0,12,999,999,999] ],[999,999,12,0,22,999,18],[999,999,999,22,0,25,24],[10,999,999,999,25,0,999], [999,14,999,18,24,999,999]]
答案 1 :(得分:1)
如果我理解正确,您正在寻找一种转换输入的方法,例如:
0 28 999 999 999 10 999
28 0 16 999 999 999 14
999 16 0 12 999 999 999
999 999 12 0 22 999 18
999 999 999 22 0 25 24
10 999 999 999 25 0 999
999 14 999 18 24 999 999
您从文件中获取的内容为matrix ixj
。
matrix = []
with open('test.txt') as file:
for line in file:
matrix.append([int(val) for val in line.split()])
你得到结果:
matrix
Out[93]:
[[0, 28, 999, 999, 999, 10, 999],
[28, 0, 16, 999, 999, 999, 14],
[999, 16, 0, 12, 999, 999, 999],
[999, 999, 12, 0, 22, 999, 18],
[999, 999, 999, 22, 0, 25, 24],
[10, 999, 999, 999, 25, 0, 999],
[999, 14, 999, 18, 24, 999, 999]]
当然,你可以使用索引:
matrix[1][2]
Out[94]: 16