题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
# -*- coding:utf-8 -*-
class Solution:
def jumpFloorII(self, number):
# write code here
思路
罗列出所有部分结果, 总结规律
假设有一个4级台阶(t),开始列举所有结果
台阶1 : 直接跳一阶
台阶2 : 直接跳法 + 先跳到 一阶
台阶3 : 直接跳法 + 先到一阶再到三阶 + 先到二阶再到三阶
台阶4 : 直接跳法 + 先到一阶再到四阶 + 先到二阶再到四阶 + 先到三阶再到四阶
。。。
台阶n : 直接跳法 + 先到一阶再到n阶 + 。。。。。 先到n-1 阶再到n阶
t1 = 1
t2 = 1 + t
t3 = 1 + t1 + t 2
t4 = (1 + t1 + t 2) + t 3 = t3 + t3
t5 = (1 + t 1 + t 2 + t 3) + t4 = t4 + t4
…
t n = 1 + t1 + t2+ … t n-1 = t n-1 + t n-1
class Solution:
def jumpFloorII(self, number):
# write code here
if number <= 0:
return 0
if number <= 2:
return number
t1 = 1
t2 = 2
target = t1 + t2 + 1 # t3的结果
for i in range(3,number):
target += target
return target