青蛙跳台階問題

2021-12-30 01:07:52 字數 1681 閱讀 6108

青蛙跳台階問題,乙隻青蛙一次可以跳上1級台階,也可以跳上2級……它也可以跳上n級。

求該青蛙跳上乙個n級的台階總共有多少種跳法。

/*** 關於本題,分析如下:

* f(1) = f(1-1) // 第一次跳1階總跳法

* f(2) = f(2-1) + f(2-2) //第一次跳1階總跳法 + 第一次跳2階總跳法

* f(3) = f(3-1) + f(3-2) + f(3-3) //第一次跳1階總跳法 + 第一次跳2階總跳法 + 第一次跳3階總跳法

* ...

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

* * 說明:

* 1) 這裡的f(n)代表的是n個台階有一次1, 2, ..., n階的跳法數。

* 2) n = 1時,只有1種跳法,f(1) = 1

* 3) n = 2時,會有2種跳法,第一次1階或者2階,這回歸到了問題(1) ,f(2) = f(2-1) + f(2-2)

* 4) n = 3時,會有三種跳法,1階、2階、3階,

* 那麼就是第一次跳1階, 剩下:f(3-1);

* 第一次跳2階,剩下f(3-2);

* 第一次跳3階,剩下f(3-3)

* 因此結論是f(3) = f(3-1) + f(3-2) + f(3-3)

* * 5) n = n時,會有n種跳法,1階、2階...n階,得出結論:

f(n) = f(n-1) + f(n-2) + ... + f(n-(n-1)) + f(n-n) => f(0) + f(1) + f(2) + f(3) + ... + f(n-1)

* 6) 以上已經是一種結論,但是為了簡單,我們可以繼續簡化:

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

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

* * 可以得出:f(n) = 2*f(n-1)

* * 7) 得出最終結論, 在n階台階, 一次有1, 2, ..., n階的跳的方式,總得跳法為:

* | -1 ,(n=0)

* f(n) = | 1 ,(n=1)

* | 2*f(n-1),(n>=2)

* *//**

* 解法一——遞迴解法

* */

public class solution

public int jumpfloorii(int target) else if (target == 1) else

}}/**

* 解法二——移位解法

* */

public class solution

public int jumpfloorii(int target)

}

青蛙跳台階問題

題目 乙隻青蛙一次可以跳上 1 級台階,也可以跳上2 級。求該青蛙跳上乙個n 級的台階總共有多少種跳法。我的思路 最開始我的思路是把這個看成是乙個數學問題,n i 1 k 2先把所有可能滿足這個公式的i和k求出來。然後在對i和k做排列組合。很明顯i的範圍應該是0 public int jumpflo...

青蛙跳台階問題

1 乙隻青蛙一次可以跳上 1 級台階,也可以跳上2 級。求該青蛙跳上乙個n 級的台階總共有多少種跳法。2 乙隻青蛙一次可以跳上1級台階,也可以跳上2 級 它也可以跳上n 級,此時該青蛙跳上乙個n級的台階總共有多少種跳法?分析 1 當n 1,只有1中跳法 當n 2時,有兩種跳法 當n 3 時,有3種跳...

青蛙跳台階問題

問題一 有乙隻青蛙,需要跳上100級台階。青蛙每次可以調一級或者兩級台階。問青蛙有多少種方式可以跳100級台階。思路 逆推 當青蛙站在100級台階上時,那它跳上100級時有可能是從99級跳一級上來的,也可能是從98級跳兩級跳上來的 從98級跳兩個一級包括在從99級跳一級情況內,所以不予考慮 所以f ...