if __name__ == '__main__': sys.setrecursionlimit(10000000)
时间: 2023-07-21 15:56:06 浏览: 126
这段代码是 Python 中用于设置递归深度的限制的语句。在 Python 中,递归深度默认为 1000,当递归深度超过这个限制时,Python 解释器会抛出 RecursionError 异常。
sys.setrecursionlimit(n) 函数用于设置递归深度的限制,其中 n 表示递归深度的最大值。在这段代码中,设置递归深度的最大值为 10000000,即 1 千万。
需要注意的是,设置递归深度的最大值太大可能会导致栈溢出等问题,而且这个值的设置应该根据实际情况进行调整,过大过小都不利于程序的正常执行。
相关问题
if __name__ == '__main__': sys.setrecursionlimit(10000000) #用于设置递归深度的限制 n = 4 inf = 9999999999 # 建立4*4的表格 graph = [[(lambda x: 0 if x[0] == x[1] else inf)([i, j]) for j in range(n)] for i in range(n)] # 建表 # [[0, 0, 0, 0], # [1, 1, 1, 1], # [2, 2, 2, 2], # [3, 3, 3, 3]] parents = [[i] * n for i in range(n)] # 关键地方,i-->j 的父结点初始化都为i for u, v, c in datas: graph[u][v] = c floyd() print('Costs:') for row in graph: for e in row: print('∞' if e == inf else e, end='\t') print()
这段代码实现了 Floyd 算法,用于求解全源最短路径问题。其中,n 表示节点的个数,inf 表示两个节点之间不存在边时的权值。初始时,graph 表示每个节点到自己的距离为0,到其他节点的距离为 inf,parents 表示每个节点的父节点都是自己。
接着,根据给定的数据 datas,更新 graph 中节点之间的权值。然后,调用 floyd 函数来求解每对节点之间的最短路径,并更新 graph 和 parents。
最后,输出 graph 中的最短路径长度,如果路径不存在,则输出 ∞。
阅读全文