dp 1 跳台階問題

2021-08-08 08:09:03 字數 641 閱讀 1698

問題:共n層台階,每次只能上1級或者2級,問有多少種上台階的方法。

首先分析一下題目,一般這種問題我都會先找一下規模最小的數值來分析一下,可以看到,上一層的走法是1種(1),上2層的走法是2種(11, 2),三層有3種(12, 21, 111),四層有5種(1111, 22, 211, 121, 112)……偷偷發現好像是斐波那契序列。。那要怎麼樣證明後邊的數呢?

不清楚,那就設個x唄。設x為走到第n層的走法總和。可以這樣想,我差一步就要到第n層了,那我就一定是在 n-1 或者 n-2 那裡,設 走到 n-1 的走法和為 x1, 走到 n - 2的走法和為 x2, 那x = x1 + x2。

x1和x2稱為問題的子結構,最終問題的解一定是根據他的子結構來解的。

最終的子結構是n = 1 和 n = 2的解,跟據這兩個解可以推出最終解。

小解法:

class

solution

return

sum;}};

動態規劃的經典是揹包問題,上邊這個算是最基礎的動態規劃。

動態規劃的理論推導可以上wiki看:

DP 1 數塔問題

數塔問題 基本模型 如上圖所示數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?數塔思想 自頂向下分析,自底向上計算。h i 表示第i層的最大值。要得到h i 1 則考慮上一層結點,到其相鄰節點可取得的值,取最大值作為h i 1 如果按照上述做法,從頂到底算起,...

跳台階問題

題目 乙個台階總共有n級,如果一次可以跳1級,也可以跳2級。求總共有多少總跳法,並分析演算法的時間複雜度。分析 這道題最近經常出現,包括microstrategy等比較重視演算法的公司都曾先後選用過個這道題作為面試題或者筆試題。首先我們考慮最簡單的情況。如果只有1級台階,那顯然只有一種跳法。如果有2...

跳台階問題

有n個階梯,青蛙一次可以跳乙個或者兩個,求總共有多少種跳法可以到達頂端?思路 如果只有一階,那麼只有一種跳法 如果有2階,那麼有2中跳法 跳1階再跳1階,一次跳2階 那麼如果有n階呢?假設對於n階的階梯,我們有f n 中跳法 那麼n階時,我們考慮如果第一次跳共有兩種選擇 第一次跳了1階,剩下n 1階...