中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中跳臺階、變態跳臺階與矩形覆蓋問題的解決方法

發布時間:2020-08-20 18:01:02 來源:腳本之家 閱讀:175 作者:大師兄 欄目:開發技術

前言

跳臺階、變態跳臺階、矩形覆蓋其實都和斐波那契數列是一類問題,文中通過示例代碼介紹的非常詳細,下面話不多說了,來一起看看詳細的介紹吧。

跳臺階

問題描述:

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

分析:

初始值很容易得到,當n > 2時,跳上n級臺階最后一步無外乎兩種情況,從第n-1級跳一級跳上來,或是從第n-2級跳2級跳上來,因此很容易得到如下遞歸公式。

F(0)= 0
F(1)= 1
F(2)= 2
F(n)= F(n-1)+ F(n-2)(n > 2)

代碼:

def jump_floor(number):
 if number <= 2:
  return number
 prev, curr = 1, 2
 for _ in range(3, number+1):
  prev, curr = curr, prev+curr
 return curr

變態跳臺階

問題描述:

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

分析:

相比上一個跳臺階,這次可以從任意臺階跳上第n級臺階,也可以直接跳上第n級。因此其遞歸公式為各個臺階之和再加上直接跳上去的一種情況。

F(0)= 0
F(1)= 1
F(2)= 2
F(n)= F(n-1)+ F(n-2)+ … + F(2)+ F(1)+ 1 = 2 **(n-1)

代碼:

def jump_floor(number):
 if number == 0:
  return 0
 return 2**(number-1)

矩形覆蓋

問題描述:

我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?

分析:

仔細分析這個問題實際上就是普通的跳臺階問題。

F(0)= 0
F(1)= 1
F(2)= 2
F(n)= F(n-1)+ F(n-2)(n > 2)

代碼:

def jump_floor(number):
 if number <= 2:
  return number
 prev, curr = 1, 2
 for _ in range(3, number+1):
  prev, curr = curr, prev+curr
 return curr

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

二手房| 儋州市| 苏尼特左旗| 双流县| 尉犁县| 迭部县| 济宁市| 永顺县| 台东县| 彭泽县| 岳阳市| 华坪县| 彩票| 公安县| 大竹县| 西贡区| 双鸭山市| 广州市| 新邵县| 邵阳市| 龙岩市| 高青县| 沭阳县| 徐闻县| 安福县| 章丘市| 介休市| 浦东新区| 洮南市| 武宁县| 塔河县| 新源县| 望城县| 阿拉善左旗| 治多县| 海南省| 平山县| 建始县| 永寿县| 应用必备| 滕州市|