动态规划
调用历史,减少重复
题目1
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
代码1
def jumpFloor(self, number):
dp=[]
dp.append(1)
dp.append(1)
dp.append(2)
while len(dp)<=number:
dp.append(dp[-1] + dp[-2])
return dp[number]
想法
假设现在6个台阶,我们可以从第5跳一步到6,另外我们也可以从4跳两步跳到6,,所以就是f(6) = f(5) + f(4).
尝试降低空间复杂度
def jumpFloor(self, number):
a,b,c,i=1,1,0,2
if number == 0 or number==1:
return number
while i<=number:
i=i+1
c=a+b
b=a
a=c
return c