青蛙跳台階

2021-09-26 04:24:28 字數 1753 閱讀 2416

我們要跳上第 n 級台階,要麼從第 n−1級台階跳一級上來,要麼從第 n−2級台階跳兩級上來,令 f(n)表示從第一級台階跳上第 n 級台階有幾種跳法。則有:

f(n)=f(n−1)+f(n−2)

先確定n=1,f(1)=1,n=2,f(2)=2,

f(3)=f(2)+f(1),f(4)=f(3)+f(2),

首先考慮遞迴,出口是n=1,或者n=2。返回f(1),f(2),其餘的返回 f(n−1)+f(n−2)。

**如下

#include

using std::cin;

using std::cout;

using std::endl;

intjumpfloor

(int num)

intmain()

還可以用動態規劃(這估計是最簡單的動態規劃了),求出跳到1–n之間所有台階的方法數

#include

using std::cin;

using std::cout;

using std::endl;

intjumpfloor1

(int num)

return result[num];}

intmain()

#include

using std::cin;

using std::cout;

using std::endl;

intjumpfloor2

(int num)

return result[2]

;}intmain()

分析一樣,不細說了,公式如下

f(n)=f(n−1)+f(n−2)+f(n-3)

就用遞推來寫了,其他的自己一品就出來了。

#include

using std::cin;

using std::cout;

using std::endl;

intjumpfloor

(int num)

intmain()

有意思不,嘻嘻嘻,分析也是一樣的,不過要遞推一下。

要跳上第 n 級台階,可以從第 n−1級台階一次跳上來,也可以可以從第 n−2級台階一次跳上來,也可以可以從第 n−3級台階一次跳上來,…,也可以可以從第 1 級台階一次跳上來。那麼問題就很簡單啦,同樣的,令 f(n) 表示從第一級台階跳上第 n 級台階有幾種跳法。則有如下公式:

f(n)=f(n−1)+f(n−2)+…+f(1)

同時,f(n−1) 也可以表示如下:

f(n−1)=f(n−2)+f(n−3)+…+f(1)

所以,由上面兩個公式可知:

f(n)=2f(n−1)

那麼,替換一哈,用n-1代替n,則有:

f(n-1)=2f(n-2)

所以f(n)=21f(n−1)=22f(n-2)=23f(n−3)=…=2(n−1)f(n−(n−1))=2(n−1)f(1)

因為 f(1)=1,所以 f(n)=2(n−1)f(1)=2(n−1)。

#include

using std::cin;

using std::cout;

using std::endl;

intmain()

青蛙跳台階

乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。解題思路 1 如果兩種跳法,1階或者2階,那麼假定第一次跳的是一階,那麼剩下的是n 1個台階,跳法是f n 1 2 假定第一次跳的是2階,那麼剩下的是n 2個台階,跳法是f n 2 3 總跳法為 f n f n...

青蛙跳台階

之前面試遇到了這種題目,不會,後來搜尋了一下,感覺分析的很好 青蛙跳乙個n階的台階,每次可以跳1階或者2階,求跳完n階y有多少種方法。分析 n 1,f n 1 n 2,f n 2 n 3,f n 3 n 4,f n 5 可以發現 f n f n 1 f n 2 由此也可以推想 比如要跳到第4階樓梯上...

青蛙跳台階

難易程度 中等 題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。在不考慮青蛙健康狀況的情況下 求該青蛙跳上乙個n級的台階總共有多少種跳法。思路 在本題的描述中,青蛙的行動只有兩種可能 一次跳乙個台階或者兩個台階,設n階台階的跳法為 f n 如果第一次跳了一階,那麼剩下的n 1階的跳法為f n...