先來分析下這個問題:
當n=1時,這個很好理解,只能跨1步這一種了
當n=2時,因為你每次可以跨1步或2步,那就是走2步或走兩個1步
當n=3時,因為你可以跨1步或2步,那你在台階1或台階2都能行,那後面就要計算到台階1有多少種走法,到台階2有多少種走法,然後2著相加,依次逆推
當n=4時,那你在台階4或台階3都能行,那後面就要計算到台階3有多少種走法,到台階4有多少種走法,然後2著相加,依次逆推
總結如下,你會發現這是斐波拉切數列,但是使用遞迴出出現重複計算問題,所以選擇動態規劃演算法。
第一層:1種,記為f(1)=1(邊界)
第二層:2種(走2步或走兩個1步),記為f(2)=2
第三層:3種(在第一層走2步或在第二層走1步),記為f(3)=f(1)+f(2)
第四層:5種(在第二層走2步或在第三層走1步),記為f(4)=f(2)+f(3)
class solution
return res;
}}};
int main()
執行列印:n=5
i,j首先賦邊界值,res儲存i+j的值,每次前進,i,j,res的值都會被賦到前面結果的值。上面的演算法是底向上,遞迴相當於自頂向下,避免了重複計算
青蛙跳台階(動態規劃)
乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 這個題採用動態規劃的思想,它每次只能跳一階或者兩階台階 那麼它跳到第n階台階就有兩種情況,從第n 1階台階一次跳一階 或者從n 2階台階一次跳兩階 那麼依次類推,只要保留跳到n 1和n...
動態規劃 1 青蛙跳台階
動態規劃 例子一 乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階。求該青蛙跳上乙個n級台階總共有多少種跳法。分析 第一步 假設台階有7階的話,先從正向分析,假如先跳了一階,那麼還有六階可選,假如先挑了二階,就還有五階可選。所以可以得出,在青蛙做出乙個動作後會有f 7 f 6 f 5 第二步 在青蛙...
動態規劃 青蛙跳台階問題
問題描述 青蛙可以一次跳乙個台階,也可以一次跳兩個台階,總共有10層台階,青蛙有多少種選擇 動態規劃 設第n層的最多選擇為stage n 根據題意,可得如下狀態轉移方程 stage n stage n 1 stage n 2 如果n 10,則上述的意思就是第十層的選擇等於第九層的選擇數 第八層的選擇...