劍指offer 跳台階

2021-09-27 11:57:21 字數 727 閱讀 8798

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

這個和斐波那契數列很相似,跳台階,要不就是跳乙個,要不就是跳兩個。那麼他遞迴的出口就有了,如果是跳乙個,那麼他就返回1,如果跳兩個,他就返回2,當台階數小於等於0時就返回0; 

public class solution 

if(target == 1)

if(target == 2)

return jumpfloor(target-1)+jumpfloor(target-2);

}}

本質上還是斐波那契數列,所以迭代也可以求

當成 dp 問題來想的話:首先分析問題,它最終解是由前面的解累積起來的解,如何縮小問題的規模?

首先可知,第一階有只能一步,一種;,第二階可以兩次一步、一次兩步兩種

通過分類討論,問題規模就減少了:

同時可以發現第 n 階的解法,只要用到 n - 1 和 n - 2 階是多少,其他的不用考慮,因此用兩個變數臨時存下來即可

public class solution 

int f1 = 2;

int f2 = 1;

for(int i = 3;i <= target;i++)

return f1;

}}

劍指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級的台階總共有多少種跳法。思路 首先窮舉一下到達最後一級台階的情況,分析最後到達是一步還是兩步。...