#Method1:动态规划
##当有n个台阶时,可供选择的走法可以分两类:
###1,先跨一阶再跨完剩下n-1阶;
###2,先跨2阶再跨完剩下n-2阶。
###所以n阶的不同走法的数目是n-1阶和n-2阶的走法数的和
class Solution(object):
    def climbStairs(self, n):
        if n==1 or n==2 or n==0:
            return n
        steps=[1,1]
        for i in xrange(2,n+1):
            steps.append(steps[i-1]+steps[i-2])
        return steps[n]

#Method2:找规律
###当输入为1, 2, 3, 4, 5, 6, 7, 8, 9, 10时,
###观察输出为1, 2, 3, 5, 8, 13, 21, 34, 55, 89,
###斐波那契数列
class Solution(object):
    def climbStairs(self,n):
        pre=cur=1
        for i in xrange(1,n):
            pre,cur=cur,cur+pre
        return cur

05-06 02:44