LeetCode70:爬樓梯

問題70:假設你正在爬樓梯。需要n階你才能到達樓頂。每次你可以爬12個臺階。你有多少種不同的方法可以爬到樓頂呢?

動態(tài)規(guī)劃,無法打印路徑,不知道具體方案什么樣,較簡單地解決統(tǒng)計數(shù)量的問題;
DFS:可以把方案打印出來。

要想爬到第n級臺階,只有兩種情況:

  • 從第n-1級臺階,向上爬一步;
  • 從第n-2級臺階,向上爬兩步。

因此,狀態(tài)轉移方程為:dp[n] = dp[n-1] + dp[n-2]

完整代碼:

class Solution:
    def climbStairs(self, n: int) -> int:
        if n == 1 or n == 2:
            return n
        dp = [None for _ in range(n+1)]
        dp[1] = 1
        dp[2] = 2
        i = 3
        while i <= n:
            dp[i] = dp[i-1] + dp[i-2]
            i += 1
        return dp[n]

運行結果:

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容