經典演算法題之(八) 上n級樓梯

2021-10-02 06:36:50 字數 1575 閱讀 8541

不多說

fibonacci(0) = 1

fibonacci(1) = 1

fibonacci(n) = fibonacci(n-1) + fibonacci(n-2)

public int fibonacci(n)

public static int f(int n)

return dp[n];

}

public static int f(int n)

return f2;

}

顯然,迭代解法使用了常數的空間,o(n)的時間,是最優的解法(ps:n階空間複雜度的dp解法一般都能改寫為n-1階空間複雜度的迭**法解決)。

爬樓梯一次能爬1階,也能爬2階。問:乙個n階樓梯有多少種爬法?(n > 0,不考慮後退的情況)

顯然:

f(1) = 1

f(2) = 2

f(n) = f(n-1) + f(n-2)

顯然,最優解法和fibonacci一樣,迭代解法是最優的。

爬n階樓梯,一次能爬1階,也能爬2階…也能爬n階,問:乙個n階樓梯有多少種爬法?(n > 0,不考慮後退的情況)

顯然:爬到第n階有n種方式:

f(1) = 1;

f(2) = 2;

// 最後乙個1代表「從0階爬n階上來」這一種爬法

f(n) = f(n-1) + f(n-2) + ... + f(1) + 1

爬n階樓梯,每級樓梯都有特定的可以爬的最遠的級數,用陣列表示。如乙個3級樓梯:arr = ,代表站在第0級台階上,最遠可以往上爬1級台階,即只能爬上第1級台階;站在第1級台階上,最多可以往上爬3級台階,即可以爬上第2級台階,也可以爬上第3級台階,還可以爬上第4級台階(如果有的話);站在第2級台階上,最多可以往上爬1級台階,即只能爬上第3級台階。那麼總共有:

leetcode題目:

爬n階樓梯,每級樓梯都有特定的可以爬的最遠的級數,用陣列表示。如乙個3級樓梯:arr = ,代表站在第0級台階上,最遠可以往上爬1級台階,即只能爬上第1級台階;站在第1級台階上,最多可以往上爬3級台階,即可以爬上第2級台階,也可以爬上第3級台階,還可以爬上第4級台階(如果有的話);站在第2級台階上,最多可以往上爬1級台階,即只能爬上第3級台階。那麼總共有:

能否爬到第n階樓梯?

爬n階樓梯,每級樓梯都有特定的可以爬的最遠的級數,用陣列表示。如乙個3級樓梯:arr = ,代表站在第0級台階上,最遠可以往上爬1級台階,即只能爬上第1級台階;站在第1級台階上,最多可以往上爬3級台階,即可以爬上第2級台階,也可以爬上第3級台階,還可以爬上第4級台階(如果有的話);站在第2級台階上,最多可以往上爬1級台階,即只能爬上第3級台階。那麼總共有:

能夠爬到第n階樓梯,如果能,有多少種爬法,最少要跳躍多少次?

能夠爬到第n階樓梯,跳法固定,如一次只能跳2步和4步,n級樓梯有多少種跳法(必須剛好跳上)—— 完全揹包問題

能夠爬到第n階樓梯,跳法固定,如一次只能跳2步和4步,n級樓梯有多少種跳法(必須剛好跳上),最少跳多少次—— 完全揹包問題

經典演算法題之Maximal Square

maximal square是道非常有意思的演算法題。它是乙個典型的動態規劃問題,同時也是2017京東面試題,2016華為機考題。有乙個n m大小的矩陣,其元素值為0或者1,求這個矩陣中全有1組成的最大方塊其大小。每個輸入包含乙個測試用例。每個測試用例的第一行包含兩個整數n 2 n 50 m 2 n...

經典遊戲演算法之八皇后

寒假歸來,繼續征程。繼續總結這系列經典的遊戲演算法。問題描述 八皇后是個古老而有趣的遊戲,是由高斯於1850年首先提出的。要求在西洋棋的棋盤上放置八個皇后,使其不能相互攻擊,即任意兩個皇后不能處於棋盤的同一行 同一列和同一條對角線上。試問有多少種放法?基本思想 關於八皇后的演算法有很多,但我認為最好...

經典演算法之八皇后問題

問題描述 八皇后問題是乙個以西洋棋為背景的問題 如何能夠在 8 8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。下面利用回溯法 遞迴寫法 來求出所有可能的結果 include include include in...