演算法題1 上台階問題

2022-04-23 02:51:26 字數 935 閱讀 7678

題目:有一樓梯共m級,剛開始時你在第一級,若每次只能跨上一級或者二級,要走上m級,共有多少走法?注:規定從一級到一級有0種走法。

給定乙個正整數intn,請返回乙個數,代表上樓的方式數。保證n小於等於100。為了防止溢位,請返回結果mod 1000000007的值。

測試樣例:

3
返回:2
1

class

goupstairs:

2def

countways(self,n):

3if n==1:

4return05

if n==2:

6return 1

7if n==3:

8return 2

9else:10

return (self.countways(n-1)+self.countways(n-2)) % 1000000007 #

為了防止溢位

1112

13class

goupstairs2:

14def

countways(self,n):

15 res=[1,1]

16if n==1:

17return018

while len(res)20return res[-1] % 1000000007

2122

if__name__=="

__main__":

23#for i in range(1,10):24#

print(goupstairs2().countways(i))

25for i in range(1, 10):

26print(goupstairs().countways(i))

本題用遞迴的斐波那契數列演算法會超時,所以可以用方法二。

上台階問題

問題描述 現在小瓜想通過台階走上平台,最底層 小瓜所在的層 編號為1,最頂層編號為n。由於小瓜的腿比較短,他一次只能向上走1級或者2級台階。小瓜想知道他有多少種方法走上平台,你能幫幫他嗎?輸入 乙個整數n,其中2 n 25。輸出 一行乙個整數,表示小瓜上台階的方案數 資料範圍 對於12 的資料,2 ...

上台階問題(遞迴,DFS)

題目 一共39層台階。如果我每一步邁上1個台階或者兩個台階,先邁左腳,再邁右腳,然後左右交換,最後一步邁右腳,也就是一共要走偶數步,那麼,上完39級台階,有多少種不同的方法?思路採用遞迴的思想,邊界條件就是台階上數小於0,返回0 台階上等於0,而且步數恰好是偶數步,那麼說明走完了所有台階,方法加1....

賽碼 上台階(C )

設定人現在在台階1層,每次只能上1層到兩層,到台階1層有0種走法,到台階2層有1種走法,到台階3層有2種走法,這樣我們已經知道底部子問題的解。f n f n 1 f n 2 比如說4層只能由2層 跨兩步 或3層到達 跨1步 因此4層的走法數應該是2層走法數和3層走法數的和。使用乙個陣列來儲存到某個台...