青蛙跳台階問題

2022-03-14 15:42:33 字數 1399 閱讀 6587

題目位址

題目的大概含義是,青蛙要跳到第n個台階,每次只能跳乙個台階,或者兩個台階,問小青蛙總共有幾種不同的跳法,跳到第n個台階上。

舉例:如果n = 1,那麼就只有一種跳法

如果n=2,那麼也只有一種跳法

如果n=3,那麼有三種跳法,分別是:

第一種,每次乙個台階:1,1,1;

第二種,先跳乙個台階,後跳兩個台階:1,2;

第三種,先跳兩個台階,後跳乙個台階:2,1;

初次拿到這個問題,無從下手,沒有絲毫頭緒,但是網上總是不乏各種大佬的,下面自己總結下。

思路分析:

跳到第n個台階的前面乙個起跳位置可能是第n-1個台階,也可能是第n-2個台階。

假設從第0個台階跳到第n-1個台階的所有跳法是f(n-1),到第n-2個台階的所有跳法是f(n-2)。那麼可以推導出從第0個台階開始到第n個台階的所有跳法是f(n-1)+f(n-2)。

在完全理解的得到這個結論之前,我自己還是比較懵逼的。

我認為得到的f(n)應該等於f(n-1) + f(n-2)再加上2,因為從第n-1跳到n,得跳乙個台階;從n-2跳到n得跳2個台階,這分別各是一種跳法。那最後不是要加上2嗎?

想了蠻久的,最後終於理解了,為啥不要加2。

因為你在前面假設從n-1跳到第n個台階,這種跳法的總數已經確認了,確認為f(n-1)了,最後一步肯定是跳乙個台階。從n-2跳到n也是同理,在0到n-2個台階跳法f(n-2)已經確認了。後面n-2到n並不是一種跳法,而是純粹的一下跳2個台階的動作。

所以最後可以得出:從第0個台階跳到第n個台階的跳法總數等於從第0個台階跳到第n-1個台階的跳法總數加上從第0個台階跳到第n-2個台階的跳法總數。

公式表示式:f(n) = f(n-1) + f(n-2)。

看到公式:f(n) = f(n-1) + f(n-2) ;有接觸過斐波那契數列的應該都有印象,這是斐波那契數列的公式。這樣我們就可以簡單用遞迴實現,**如下:

引入remmap的原因是,儲存中間值,不對相同台階的步數做兩次同樣的運算。降低執行時間。

比如:跳到第7個台階,需要得到第6和第5台階的跳法數;跳到第8個台階需要第7和第6台階的跳法數。如果不用map儲存中間值,那麼從第0個台階跳到第6個台階的跳法數就需要計算兩次。時間上的消耗就大大增加了。這是典型的空間(多引入一種資料結構)換時間(執行時間)的思想。

青蛙跳台階問題

題目 乙隻青蛙一次可以跳上 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 ...