专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

谈谈跳台阶问题

1、一次可以跳一个台阶或者两个台阶

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

示例 1:

输入:n = 2
输出:2
示例 2:

输入:n = 7
输出:21
提示:

0 <= n <= 100

设跳上 n 级台阶有 f(n) 种跳法。在所有跳法中,青蛙的最后一步只有两种情况:跳上 1 级或 2 级台阶。

1、 当为 1 级台阶: 剩 n-1个台阶,此情况共有 f(n−1) 种跳法;
2、 当为 2 级台阶: 剩 n-2个台阶,此情况共有 f(n−2) 种跳法。

f(n) 为以上两种情况之和,即 f(n)=f(n-1)+f(n-2)

class Solution {
    public int numWays(int n) {
        if (n == 0)
            return 1;
        if (n <= 2)
            return n;
        int[] dp = new int[n + 1];
        dp[1] = 1;
        dp[2] = 2;
        for (int i = 3; i <= n; i++) {
            dp[i] = (dp[i - 1] + dp[i - 2]);
        }
        return dp[n];
    }
}

2.一次可以跳一个台阶、两个台阶或者三个台阶

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

最后一步可能是从第n-1阶往上走1阶、从n-2阶往上走2阶,或从第n-3阶往上走3阶。因此,抵达最后一阶的走法,其实就是抵达这最后三阶的方式的总和。

class Solution {
    public static int numWays(int n) {
        if (n == 0)
            return 1;
        if (n == 2)
            return 2;
        if (n == 3)
            return 4;
        int[] dp = new int[n + 1];
        dp[1] = 1;
        dp[2] = 2;
        dp[3] = 4;
        for (int i = 4; i <= n; i++) {
            dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];
        }
        return dp[n];
    }

}

文章永久链接:https://tech.souyunku.com/27878

未经允许不得转载:搜云库技术团队 » 谈谈跳台阶问题

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们