記事のディレクトリ
方法1:動的計画法:時間O(n)、空間O(1)
回答:
- ファイバー(n)=ファイバー(n-1)+ファイバー(n-2)企画繊維(0)= 0、ファイバー(1)= 1
- dp [n] = dp [n-1] + dp [n-2]、dp [0] = 1、dp [1] = 1、カエルは一度に1ステップまたは2ステップしかジャンプできないため、本質とフィボナッチ同じシーケンス
1.斐波那契数列
class Solution {
public:
int fib(int n)
{
// 1.动态规划:dp[i] = dp[i - 1] + dp[i - 2]
// 其中 dp[0] = 0, dp[1] = 1
if (n < 2)
return n;
int dp[2] = {
0, 1 };
for (int i = 1; i < n; i++)
{
int tmp = dp[1];
dp[1] = (dp[1] + dp[0]) % (int)(1e9 + 7);
dp[0] = tmp;
}
return dp[1];
}
};
2.青蛙跳台问题
class Solution {
public:
int numWays(int n)
{
// 1.动态规划:dp[n] = dp[n - 1] + dp[n - 2]
// 初始状态:dp[0] = 1, dp[1] = 1;
if (n < 2)
return 1;
int dp[2] = {
1, 1 };
for (int i = 1; i < n; i++)
{
int tmp = dp[1];
dp[1] = (dp[0] + dp[1]) % (int)(1e9 + 7);
dp[0] = tmp;
}
return dp[1];
}
};