小明爬楼梯--python
生活随笔
收集整理的這篇文章主要介紹了
小明爬楼梯--python
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
'''題目:一共有15臺階,小明每次可以爬一節,或者兩節,或者三階。
思路:
第一種
如果把她用數學語言符號化1階臺階分解成1,意味著只有一種方法;2可以分解成2和1 1意味著二階臺階有兩種算法。3可以分解成 0 3,2 1,1 2 ,111
四種上法。用字典表達式{1:1,2:2,3:4}
思想是不管你上多少臺階都是由123臺階上法組合而來的。考慮一下如何到達第4層樓梯
4可以分解成0 4,3 1 ,1 3 ,2 2,2 1 1,1 2 1,1 1 2 ,1 1 1 1分解成8種而只能用1 2 3 組合所以7種
5可以分解成16種,因為只能用1 2 3 組合所以13種
6可以分解為32種,因為只能用1 2 3 組合所以24種
刪除元素的規律我沒有找到,換下面的思路進行寫題第二種思路:
如何到達5臺階呢?
從4臺階上一個
從3臺階上兩個
從2臺階上三個
只有以上這三種情況,三種情況相加就是就是達到5臺階的總算法
設到達4臺階有x種方法,到達3臺階有y種方法,到達2臺階有z種方法
所以到達5臺階就是x+y+z轉成函數就是下列函數表達式
f(n)=f(n-1)+f(n-2)+f(n-3) n>=4
'''
def climbStairs1(n):
#遞推法a=1b=2c=4for i in range(n-3):c,b,a=a+b+c,c,breturn c
print(climbStairs1(15))
上面用的是斐波那契數列算法
下面是遞歸算法
def climbStairs2(n):first={1:1,2:2,3:4}if n in first.keys():return first[n]else:return climbStairs2(n-1)+climbStairs2(n-2)+climbStairs2(n-3)
print(climbStairs2(15))
'''
如果最多爬四階臺階,原理是一樣的
怎么到達15臺階?
14上一層
13上二層
12上三層
11上四層
f(n)=f(n-1)+f(n-2)+f(n-3)+f(n-4)
'''
def climbStairs3(n):first={1:1,2:2,3:4,4:8}if n in first.keys():return first[n]else:return climbStairs3(n-1)+climbStairs3(n-2)+climbStairs3(n-3)+climbStairs3(n-4)
print(climbStairs3(15))
那個數學語言算法是我第一種想到的解法,奈何沒有找到刪除規律,只能擱淺。希望大家可以給我提下見解,謝謝你們在我修煉python路上提供的幫助。
總結
以上是生活随笔為你收集整理的小明爬楼梯--python的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据库】SQL server 评估期已
- 下一篇: 无线回程mesh组网从入门到精通【伸手党