劍指Offer 10 青蛙跳台階問題

2021-10-04 15:21:17 字數 899 閱讀 6872

題目

乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階。求該青蛙跳上乙個 n 級的台階總共有多少種跳法。

答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。

示例 1:

輸入:n = 2

輸出:2

示例 2:

輸入:n = 7

輸出:21

(1)設跳上 n 級台階有 f(n) 種跳法。在所有跳法中,青蛙的最後一步只有兩種情況: 跳上 1級或 2 級台階。

(2)f(n) 為以上兩種情況之和,即 f(n)=f(n-1)+f(n-2)

以上遞推性質為斐波那契數列。本題可轉化為 求斐波那契數列第n 項的值 。

青蛙跳台階問題: f(0)=1, f(1)=1 , f(2)=2 ;

斐波那契數列問題: f(0)=0 , f(1)=1 , f(2)=1 。

動態規劃解析:

狀態定義: 設 dp 為一維陣列,其中 dp[i] 的值代表 斐波那契數列第i個數字 。

轉移方程: dp[i + 1] = dp[i] + dp[i - 1] ,即對應數列定義 f(n + 1) = f(n) + f(n - 1) ;

初始狀態: dp[0] = 1, dp[1] = 1 ,即初始化前兩個數字;

返回值: dp[n],即斐波那契數列的第 n個數字。

class

solution

if(n==2)

int two =1;

int one =2;

int sum =0;

for(

int i =

3; i <= n;i++

)return sum;

}}

劍指offer10題 青蛙跳台階問題

乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階。求該青蛙跳上乙個 n 級的台階總共有多少種跳法。答案需要取模 1e9 7 1000000007 如計算初始結果為 1000000008,請返回 1。示例 1 輸入 n 2 輸出 2 示例 2 輸入 n 7 輸出 21 示例 3 0 n 100 動態規...

劍指offer 青蛙跳台階

乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 這是一道比較簡單的動態規劃問題。n 1時,青蛙只能跳一次,即num 1 n 2時,青蛙可以有兩種方法,1 1,2 即num 2 n 3時,青蛙可以有三種方法,1 1 1,1 2,2 1...

劍指offer 青蛙跳台階

乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 public class solution if target 1 if target 2 return jumpfloor target 1 jumpfloor target 2 乙...