Python:Google Kickstart 2020 - A 轮中的运行时错误
Python: runtime error in Google Kickstart 2020 - Round A
我正在尝试使用 Python 3.7 解决 Google Kickstart 2020 A 轮的问题。
我通过了除“捆绑”以外的所有问题。
我的算法通过了样本,但由于运行时错误而未能通过测试。
我还用我用一个简单的脚本构建的大型测试用例对其进行了测试,并且它可以正常工作,而不会引发任何类型的异常。
我还认为,因为我在我的机器上使用 Python 3.8,而 Google 使用 3.7 测试脚本,这可能是重点...但我找不到我的代码有什么问题。
这是我的代码:
ans = 0
class Node:
def __init__(self):
self.children = {}
self.count = 0
def insert(node, key):
for char in key:
idx = char
if idx not in node.children:
node.children[idx] = Node()
node = node.children[idx]
node.count +=1
def resetAns(self):
global ans
ans = 0
def dfs(self, dep=0, k=0):
global ans
for c in self.children:
self.children[c].dfs(dep+1, k)
self.count+=self.children[c].count
while self.count >= k:
self.count -= k
ans+=dep
return ans
def bundling():
N, K = map(int, input().split())
_node = Node()
_node.resetAns()
for _ in range(0, N):
_v = input()
_node.insert(_v)
return _node.dfs(0, K)
for _ in range(int(input())):
print("Case #{}: {}".format(_, bundling()))
欢迎任何帮助:D
由于 python 提供的默认递归深度限制较小,所以出现了这个问题。
您可以使用以下代码明确设置限制。
import sys
sys.setrecursionlimit(10**6)
我正在尝试使用 Python 3.7 解决 Google Kickstart 2020 A 轮的问题。 我通过了除“捆绑”以外的所有问题。 我的算法通过了样本,但由于运行时错误而未能通过测试。 我还用我用一个简单的脚本构建的大型测试用例对其进行了测试,并且它可以正常工作,而不会引发任何类型的异常。
我还认为,因为我在我的机器上使用 Python 3.8,而 Google 使用 3.7 测试脚本,这可能是重点...但我找不到我的代码有什么问题。 这是我的代码:
ans = 0
class Node:
def __init__(self):
self.children = {}
self.count = 0
def insert(node, key):
for char in key:
idx = char
if idx not in node.children:
node.children[idx] = Node()
node = node.children[idx]
node.count +=1
def resetAns(self):
global ans
ans = 0
def dfs(self, dep=0, k=0):
global ans
for c in self.children:
self.children[c].dfs(dep+1, k)
self.count+=self.children[c].count
while self.count >= k:
self.count -= k
ans+=dep
return ans
def bundling():
N, K = map(int, input().split())
_node = Node()
_node.resetAns()
for _ in range(0, N):
_v = input()
_node.insert(_v)
return _node.dfs(0, K)
for _ in range(int(input())):
print("Case #{}: {}".format(_, bundling()))
欢迎任何帮助:D
由于 python 提供的默认递归深度限制较小,所以出现了这个问题。 您可以使用以下代码明确设置限制。
import sys
sys.setrecursionlimit(10**6)