猴子爬山乙隻頑猴在一座有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...