【青蛙跳台阶问题 —— (三种算法)】

小明 2025-05-03 10:00:34 7

青蛙跳台阶问题 —— (三种算法)

  • 一.题目介绍
    • 1.1.题目
    • 1.2.图示
    • 二.解题思路
    • 三.题解及其相关算法
      • 3.1.递归分治法
      • 3.2.动态规划算法(Dynamic Programming)
      • 3.3.斐波那契数列法
      • 四.���意细节

        一.题目介绍

        1.1.题目

        一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。

        答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回

        示例 1:

        输入:n = 2

        输出:2

        示例 2:

        输入:n = 7

        输出:21

        示例 3:

        输入:n = 0

        输出:1

        提示:

        0 int con=(int)1e9 + 7; if (n == 1) { return 1; } else if (n == 2) { return 2; } else { return climbStairs(n - 1)%con + climbStairs(n - 2)%con; } } int main() { int n; printf("请输入楼梯的阶数:"); scanf("%d", &n); int ways = climbStairs(n); printf("%d 阶楼梯一共有 %d 种跳法。\n", n, ways); return 0; } int con = (int)1e9 + 7; if (number == 1) return 1; else if (number == 2) return 2; else { int dp[MAX]; dp[1] = 1; dp[2] = 2; int i = 0; for (i = 3; i dp[i] = dp[i - 1] % con + dp[i - 2] % con; } return dp[number]; } } int main() { int n; printf("请输入楼梯的阶数:"); scanf("%d", &n); int ways = climbStairs(n); printf("%d 阶楼梯一共有 %d 种跳法。\n", n, ways); return 0; } int con = (int)1e9 + 7; int first = 0; int second = 1; int tem = 0; while (n--) { tem = first + second; first = second % con; second = tem % con; } return first; } int ClimbStairs(int n) { return fbnq(n + 1); } int main() { int n; printf("请输入楼梯的阶数:"); scanf("%d", &n); int ways = ClimbStairs(n); printf("%d 阶楼梯一共有 %d 种跳法。\n", n, ways); return 0; }

The End
微信