1. 程式人生 > >跳臺階 & 變態跳臺階 (C/C++, Java, Python 分別實現)

跳臺階 & 變態跳臺階 (C/C++, Java, Python 分別實現)

跳臺階-題目描述

一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。

思路:f(0)=0, f(1)=1, f(2)=2,  n>2時 狀態轉移方程為 f(n) = f(n-1) + f(n-2)

C/C++

Java

Python    執行時間:31ms佔用記憶體:5608k

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloor(self, number):
        # write code here
        ans = []
        ans.append(0)
        ans.append(1)
        ans.append(2)
        for i in range(3,100):
            ans.append(ans[i-1] + ans[i-2])
        return ans[number]

變態跳臺階-題目描述

一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。


C/C++

Java

Python

數學推倒 法    執行時間:30ms佔用記憶體:5604k

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloorII(self, number):
        # write code here
        return 2**(number-1)

移位 法    執行時間:25ms佔用記憶體:5856k

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloorII(self, number):
        # write code here
        if number == 0:
            return 0
        elif number == 1:
            return 1
        elif number == 2:
            return 2
        else:
            return 2<<(number-2)    //左移number-2位