今天蹲大的時候,想著這道題,逆向想通了,記下來。
題目:有n級階梯,往上走的時候,有兩種走法:走1級或走2級。問,蹬上n級階梯,總共有多少總解法。
正向想很容易陷進去前面走的是否有重複、交叉一類的思維陷阱中。逆向就好想了:
我們先假設:n級階梯總共有k(n)中解法。
人在走最後一步的時候,只有兩種解法:走一步或走兩步。所以,k(n)就和k(n-1)和k(n-2)有關。即:
k(n) = :
1. k(n-1)後,再往上走一步。由於此時只有「走一步」這一種解法,所以仍然是k(n-1)種解法;
2.k(n-2)後,再往上走兩步。同上,此時只有「走兩步」這一種解法(如果:往上連續走兩個一步,那最後一步就是2步而不是1步了,就該歸到k(n-1)中了),所以,此時還是k(n-2)種解法;
因此,可以得到遞推公式:
k(n) = k(n-1) + k(n-2)
其中,k(1) = 1, k(2) = 2.
這個數列是啥?就是斐波那契數列。
N級台階走法 演算法問題
題目 總共100級台階 任意n級都行 小明每次可選擇走1步 2步,問走完這100級台階總共有多少種走法?分析 對於台階走法 假設只有乙個台階,那麼只有一種跳法,那就是一次跳一級,f 1 1 如果有兩個台階,那麼有兩種跳法,第一種跳法是一次跳一級,第二種跳法是一次跳兩級,如果有大於2級的n級台階,那麼...
N個人都不坐自己位置的情況有幾種
問題描述 n個人每個人都有自己的位置,問每個人都不坐自己的位置有幾種情況 思路很簡單 遞迴 第乙個人可以做其他n 1個位置,當第乙個人做每乙個位置,比如說第乙個人坐2號位置和3號位置的情況是一樣多的。然後當第乙個人坐2號位置,剩下的情況和原問題並不等價 因為原問題每個人都有自己的位置,但是現在子問題...
js 台階有n級 青蛙跳台階相關問題
問題一 乙隻青蛙一次可以跳上一級台階,也可以跳上二級台階,求該青蛙跳上乙個n級的台階總共需要多少種跳法。我們來分析一下 當n等於1的時候,只需要跳一次即可,只有一種跳法,記f 1 1 當n等於2的時候,可以先跳一級再跳一級,或者直接跳二級,共有2種跳法,記f 2 2 當n等於3的時候,他可以從一級台...