关于全局变量的问题
为什么这里的memo为全局变量,外部memo长度仍为0呢? 输出的地方见注释memo = dict()
def superEggDrop(K: int, N: int):
def dp(K, N) -> int:
if K == 1: return N
if N == 0: return 0
# 避免重复计算
if (K, N) in memo:
return memo[(K, N)]
res = float("INF")
# 穷举
for i in range(1, N + 1):
res = min(res,
max(
dp(K, N - i),
dp(K - 1, i - 1)
) + 1)
# print(memo) 在这里有输出
memo[(K, N)] = res
return res
# print(len(memo)) 在这里输出为0
return dp(K, N)
print(len(memo)) # 在这里输出也为0
print(superEggDrop(10, 10)) memo 是在 dp 函数添加元素的,还没调用 spuerEggDrop、dp 的时候就打印 memo 的长度肯定是 0 ,调用后再打印看看:
memo = dict()
def superEggDrop(K: int, N: int):
def dp(K, N) -> int:
if K == 1: return N
if N == 0: return 0
# 避免重复计算
if (K, N) in memo:
return memo[(K, N)]
res = float("INF")
# 穷举
for i in range(1, N + 1):
res = min(res,
max(
dp(K, N - i),
dp(K - 1, i - 1)
) + 1)
# print(memo) 在这里有输出
memo[(K, N)] = res
return res
# print(len(memo)) 在这里输出为0
return dp(K, N)
print(len(memo)) # 在这里输出也为0
print(superEggDrop(10, 10))
print(len(memo)) 楼上说的对@wuqramy @乘号 Hello. 发表于 2020-4-15 22:08
楼上说的对@wuqramy @乘号
干嘛 wuqramy 发表于 2020-4-15 22:09
干嘛
鱼币。。 Hello. 发表于 2020-4-15 22:11
鱼币。。
?
页:
[1]