我正在处理一个基于旅行商问题的问题,由于某种原因,min()
函数在与另一个浮点数进行比较时不能为我提供正确的数字
我尝试将float()放在要比较的float周围,但这只是给了我相同的输出
prn = [0]
for _ in range(1, N):
for i in range(1, len(lst)):
mn = 100
mni = 0
chk = sqrt((lst[i][1][0] - last[0])**2 + (lst[i][1][1] - last[1])**2)
if int(chk) < int(mn):
mn = chk
mni = lst[i][0]
delete = i
last = lst[delete][1]
lst.pop(delete)
prn.append(mni)
print(mn)
运行输入时,您可以在这里找到:https://iceland.kattis.com/problems/iceland.landsreisa/file/statement/attachments/iceland.txt
prn
列表是[0, 453, 452, ..., 2, 1]
而不是[0, 4, 13, ..., xn-1, xn]
,因此min()
函数使mn
等于它被馈送的最后一个内容。
答案 0 :(得分:0)
for i in range(1, len(lst)):
mn = 100
mni = 0
chk = sqrt((lst[i][1][0] - last[0])**2 + (lst[i][1][1] - last[1])**2)
if int(chk) < int(mn):
mn = chk
mni = lst[i][0]
请注意,每次迭代时如何始终将mn和mni分别设置为100和0,因此,您总是将chk与100进行比较。因此,在附加mni时,它将是lst [i] [0]的值最后一次迭代,即0。
我假设这是您对min()的实现,而mni表示min,并且您在其他地方定义了mn和mni,因为它们不在范围内。