|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为什么这里的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))
复制代码
|
|