斐波那契數列問題的遞迴和動態規劃2

2021-10-24 05:14:37 字數 793 閱讀 8981

斐波那契數列問題的遞迴和動態規劃2

給出乙個整數 n,代表台階數,一次可以跨 2 個或者 1 個台階,請輸出有多少種走法。

輸入描述:

第一行乙個整數 n。

輸出描述:

輸出走法數對 1e9 + 7 取模的值。

示例1輸入

3
輸出
3
備註:

1 ≤n

≤1018

1 \leq n \leq 10^

1≤n≤10

18題解:

跟前面一題 斐波那契數列問題的遞迴和動態規劃 基本一致,遞推公式:f(n)=f(n-1)+f(n-2) ,唯一的不同就是 f(1)=1,f(2)=2。

**:

#include #include using namespace std;

typedef long long ll;

const ll mod = 1e9 + 7;

ll tmp[2][2];

ll n;

void mat_mul(ll ret[2], ll ans[2]) }}

memcpy(ret, tmp, sizeof tmp);

}void solve(ll n) , };

ll ans[2] = , };

while (n)

printf("%lld\n", (2ll * ret[0][0] % mod + ret[1][0]) % mod);

}int main(void)

遞迴和動態規劃 斐波那契數列

程式設計師 面試指南 chapter 4 感受 mulmatrix函式和matrixpower函式寫法要注意細節,需要牢記加速矩陣乘法的演算法思路將時間複雜度降低!暴力遞迴,o 2 n intf1 int n return res 利用矩陣,o log n 牛客上 給出乙個整數 n,請輸出斐波那契數...

斐波那契數列(經典遞迴和動態規劃)

斐波那契數列,指的是這樣乙個數列 1 1 2 3 5 8 13 21 也就是除了第乙個和第二個數以外,每一項都等於前兩項之和。使用經典遞迴的做法如下 public int fib1 int a return fib1 a 1 fib1 a 2 但是使用經典遞迴的方法效率較低。原因是沒有儲存已經計算過...

有關遞迴和斐波那契數列

求斐波那契數列第n項,最簡單的方法 intf int n 但顯然這很低效,因為會重複計算很多次前面的值,比如算f 10 要得到f 9 和f 8 而求f 9 要求f 8 和f 7 求f 8 要求f 7 和f 6 就重複計算了f 8 和f 7 越往後重複的越多,總複雜度為指數級,效率極低 我們可以將前面...