【发布时间】:2021-07-21 02:22:47
【问题描述】:
所以我尝试解决一个简单的网格问题,我这样解决:\
def grid_count (n,m):
if m == 1 and n == 1:
return 1
if m == 0 or n == 0:
return 0
return grid_count(m-1,n) + grid_count(m,n-1)
这里 N X M 是网格的行和列,但不适合大输入 例如。如果我输入---> 18X18 用于 N 和 M 它会给我一个运行时错误所以我用 动态方法 和
dic ={}
def grid_count (n,m):
# key = str(n)+","+str(m)
key = n*m
if key in dic:
return dic[key]
if m == 1 and n == 1:
dic[key] = 1
if m == 0 or n == 0:
dic[key] = 0
dic[key] = grid_count(m-1,n) + grid_count(m,n-1)
return dic[key]
如果我这样做,我有 2 种错误
error_1 1 : RecursionError: 获取对象的str时超出了最大递归深度
我得到了答案 即--->
sys.setrecursionlimit(100**8)
但在那之后又出现了一个错误
error_2 2:内存错误:堆栈溢出 我不知道我知道什么,
任何帮助!
【问题讨论】:
-
这似乎是一个阶乘结果。即它会变大并迅速耗尽堆栈深度和内存 - 你应该对这个问题有这个问题。查看this问题的答案。
标签: python dynamic grid dynamic-programming