python課程之猴子爬山演算法

2021-10-03 15:46:50 字數 1212 閱讀 2353

猴子爬山乙隻頑猴在一座有n級台階的小山上爬山跳躍。上山時需從山腳至山頂往上跳n級台階,一步可跳1級,或跳2級,或跳3級,求上山有多少種不同的跳法? (n<1000)

【輸入形式】

請輸入台階數:

【輸出形式】

跳法數:***x

【樣例輸入】

請輸入台階數:20

【樣例輸出】

跳法數:121415

每一次都可以選擇1,2,3有3種跳法

直接使用遞迴

jumpway = [1, 2, 3]

footstep = input()

jumping = 0

#first write

def jump(nowstep, footstep, jumpway):

if nowstep == footstep:

global jumping

jumping += 1

return

elif nowstep > footstep:

return

else:

for i in range(len(jumpway)):

jump(nowstep + jumpway[i], footstep, jumpway)

jump(0, footstep, jumpway)

print(jumping)

但是效率過於低

想辦法對演算法進行合理優化,我第一時間想到的是樹,這是一顆每個節點都有3個葉子節點(除了最後幾個)。而畫出來的樹又有很多重複的樹結構,我就便想到斐波那契數列。

即先對前幾個簡單的賦值,後面的是前面的和。

footstep = eval(input())

steps = [-1]*1001

steps[0] = 0

steps[1] = 1

steps[2] = 2

steps[3] = 4

def f(x):

if x<0:

return 0

if x<4:

return steps[x]

if steps[x] is not -1:

return steps[x]

steps[x]=f(x-1)+f(x-2)+f(x-3)

return steps[x]

print(f(footstep))

演算法課程之Hash

查詢數字是否出現 hash 演算法名稱 hash應用 詳 情 旺仔 2020.04.04 演算法思想 map類 include using namespace std const int maxn 100010 是否出現 bool hashtable1 maxn 統計個數 int hashtable...

python實現爬山演算法的思路詳解

問題 找圖中函式在區間 5,8 的最大值 重點思路 爬山演算法會收斂到區域性最優,解決辦法是初始值在定義域上隨機取亂數100次,總不可能100次都那麼倒霉。實現import numpy as np import matplotlib.pyplot as p import math 搜尋步長 delt...

Python機器學習課程 線性回歸演算法

最基本的機器學習演算法必須是具有單個變數的線性回歸演算法。如今,可用的高階機器學習演算法,庫和技術如此之多,以至於線性回歸似乎並不重要。但是,學習基礎知識總是乙個好主意。這樣,您將非常清楚地理解這些概念。在本文中,我將逐步解釋線性回歸演算法。想法和公式 線性回歸使用非常基本的 思想。公式如下 y c...