Recursion 动态三N步
我正在解决破解编码面试的问题: 一个孩子跑上n级楼梯,一次可以跳1级、2级或3级。 实现一个方法来计算孩子可以跑上楼梯的可能方式。 我提出了一个动态解决方案:Recursion 动态三N步,recursion,dynamic-programming,Recursion,Dynamic Programming,我正在解决破解编码面试的问题: 一个孩子跑上n级楼梯,一次可以跳1级、2级或3级。 实现一个方法来计算孩子可以跑上楼梯的可能方式。 我提出了一个动态解决方案: def dynamic_prog(N): store_values = {1:1,2:2,3:3} return dynamic_prog_helper(N, store_values) def dynamic_prog_helper(N, map_n): if N in map_n: retur
def dynamic_prog(N):
store_values = {1:1,2:2,3:3}
return dynamic_prog_helper(N, store_values)
def dynamic_prog_helper(N, map_n):
if N in map_n:
return map_n[N]
map_n[N] = dynamic_prog_helper(N-1, map_n) + dynamic_prog_helper(N-2, map_n) + dynamic_prog_helper(N-3,map_n)
return map_n[N]
我不知道为什么计算不正确
dynamic_prog(5) = 11, but should be 13
dynamic_prog(4) = 6, but should be 7
有人能给我指出正确的方向吗?关键的问题是
存储值[3]
的初始值是错误的。从3个步骤中,您有4个可能性:
三,
2 1
1 2
11
修复该错误将获得预期的结果:
def dynamic_prog(N):
store_values = {1:1,2:2,3:4}
return dynamic_prog_helper(N, store_values)
...
for stair_count in range(3, 6):
print dynamic_prog(stair_count)
输出:
4
7
13