劍指offer 跳台階

2021-08-31 20:57:09 字數 1002 閱讀 7200

乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法(先後次序不同算不同的結果)。

當台階為n=1,跳法f(n)=1;

當台階為n=2,跳法f(n)=2; 方法(1,1)(2)

當台階為n=3,跳法f(n)=3; 方法(1,1,1)(1,2)(2,1)

當台階為n=4,跳法f(n)=5; 方法(1,1,1,1)(1,1,2)(1,2,1)(2,1,1)(2,2)

觀察f(n)其實為斐波那契數列,所以

依次類推,可以遞迴求出n級階梯跳法之和。f(n)=f(n-1)+f(n-2);

f (n

)=

1 & n=1 \\ 2 & n= 2 \\ f(n-1)+f(n-2) & n>2 \end

f(n)=⎩

⎪⎨⎪⎧

​12f

(n−1

)+f(

n−2)

​n=1

n=2n

>2​

解法一 :直接用公式,但是效率低。

public

class

solution

if(target==

1||target==2)

return

jumpfloor

(target-1)

+jumpfloor

(target-2)

;}}

解法二:把已經得到的數列的中間項儲存下來。下次計算的時候先查詢。

public

class

solution;if

(target<3)

int jump_nminusone=2;

int jump_nminustwo=1;

int jump_n=0;

for(int i=

3;i<=target;i++

)return jump_n;

}}

劍指offer 跳台階

跳台階1 題目 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。思路 遞迴思想 可以理解為前面m步的情況加上最後一步的情況,前面m步理解為,m 1步加上最後一步的情況。最後一步分為2中情況,上1級和上2級。如下 class solution 跳台階2 題目 ...

劍指Offer 跳台階

乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 解析 當青蛙到到n級時,有兩種跳法,一種是從n 1級跳1級,還有種是n 2跳2級 f n f n 1 f n 2 大家對這個公式是不是很熟悉,對,是斐波那契數列。所以這是一道動態規劃的問題。斐波那契數列,只能上...

劍指Offer 跳台階

author tom qian email tomqianmaple outlook.com github date 2017年8月10日 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。思路 首先窮舉一下到達最後一級台階的情況,分析最後到達是一步還是兩步。...