算法9:"變態"跳臺階

#題目:變態跳臺階(出題的人就是個變態,人家這是牛人)->一次可以跳任意臺階數,如一次跳1個臺階,2個臺階,3個臺階。。。
#因此,如果我們想要這個"變態"跳到第n個臺階的話,它有:
#"變態"跳到臺階1的跳法+"變態"跳到臺階2的跳法+"變態"跳到臺階3的跳法+...+ "變態"跳到臺階n-1的跳法 + 1(變態直接從0跳到n)
#這裏的"變態"跳到1,跳到2,跳到3...的跳法,指的是它第一步跳到這裏,第二步直接跳到臺階n,所以跳法總數是其跳到臺階1,臺階2,臺階3...的和

#而"變態"跳到臺階1的跳法 = 變態跳到臺階1的跳法(1:它能從臺階0跳來)
#"變態"跳到臺階2的跳法 = 變態跳到臺階2的跳法(2:它能從臺階0,臺階1跳來)
#同理,"變態"跳到臺階3的跳法 = 變態跳到臺階3的跳法(1(跳到臺階1) + 2(跳到臺階2) + 1(直接跳到3):它能從0,1,2三個臺階上跳來) 
#因此,我們從"變態"它從哪來來,可以直接得到跳到臺階n的跳法數 = 跳到1 + 跳到2 + ... + 跳到n-1 + 1
import numpy as np


def JumpSteps(target):
    #定義全是1的數組的意義是它代表着直接跳到n這裏的一種方法
    steps = np.ones(target)
    for i in range(1,target):
        #計算跳到n的跳法
        for j in range(0,i):
            steps[i] += steps[j]
    print("跳到各個臺階分別對應的跳法數如下所示:")
    print(steps)
    #將我們需要的跳到的目標臺階target所對應的跳法數返回
    #因爲索引從0開始,索引目標數據在steps[target-1]
    print("其中跳到第"+str(target)+"臺階對應跳法數是:")
    return steps[target-1]


print("計算我們跳到第五個臺階有多少種跳法:")
print(int(JumpSteps(5)))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章