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