[ソードフィンガー10]フィボナッチ数列、プラットフォームからジャンプするカエル

方法1:動的計画法:時間O(n)、空間O(1)

回答:

  1. ファイバー(n)=ファイバー(n-1)+ファイバー(n-2)企画繊維(0)= 0、ファイバー(1)= 1
  2. 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];
    }
};

おすすめ

転載: blog.csdn.net/qq_45691748/article/details/112444915