刷題記錄7 20 青蛙們跳台階

2021-10-08 04:15:22 字數 1354 閱讀 8840

劍指 offer 46. 把數字翻譯成字串、

乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階。求該青蛙跳上乙個 n 級的台階總共有多少種跳法。

答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。

由於青蛙一次可以跳一格或者兩格,所以到達當前狀態的途徑有兩個:從前乙個台階跳過來或者從前數兩個台階跳過來,因此有關係:dp[i] = dp[i-1] + dp[i-2]

class

solution

:def

numways

(self, n:

int)

->

int:

dp =[0

]* n

if n ==

0or n==1:

return

1 dp[0]

=1dp[1]

=2for i in

range(2

,n):

dp[i]

= dp[i-1]

+ dp[i-2]

return dp[n-1]

%1000000007

給定乙個數字,我們按照如下規則把它翻譯為字串:0 翻譯成 「a」 ,1 翻譯成 「b」,……,11 翻譯成 「l」,……,25 翻譯成 「z」。乙個數字可能有多個翻譯。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。

class

solution

:def

translatenum

(self, num:

int)

->

int:

s =str(num)

dp =

dict()

dp[0]

, dp[1]

=1,1

a, b =1,

1for i in

range(2

,len

(s)+1)

: a, b =

(a+b if

'10'

<= s[i-

2:i]

<=

'25'

else a)

, a dp[i]

= a return dp[

len(s)

]

然後發現,用122432627258356這個例子測試的時候 出現了尷尬的事情,

數了一下感覺不是我的問題,然後提交通過了.

劍指offer刷題記錄 跳台階

乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 對於本題,前提只有 一次 1階或者2階的跳法。a.如果兩種跳法,1階或者2階,那麼假定第一次跳的是一階,那麼剩下的是n 1個台階,跳法是f n 1 b.假定第一次跳的是2階,那麼剩下的...

OI刷題記錄

2014 4 18 poj3264 bzoj1699 balanced lineup rmq 2014 4 19 bzoj1012 jsoi2008 最大數maxnumber noi2004 鬱悶的出納員 bzoj3224 tyvj 1728 普通平衡樹 2014 4 20 bzoj1862 105...

面試刷題記錄

寫一段 判斷乙個包括 的表示式是否合法 注意看樣例的合法規則。給定乙個表示式a,請返回乙個bool值,代表它是否合法。測試樣例 a b 5 4 返回 true 測試樣例 a b 5 4 返回 false include vector include iostream using namespace ...