题解 | 跳台阶扩展问题

跳台阶扩展问题

https://www.nowcoder.com/practice/953b74ca5c4d44bb91f39ac4ddea0fee

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int n = in.nextInt();
        System.out.println(run(n));
    }

    public static int run(int n){
           // 边界条件
        if (n == 0) return 0; // 如果n为0,返回0
        if (n == 1) return 1; // 如果n为1,返回1
        if (n == 2) return 2; // 如果n为2,返回2
        if (n == 3) return 4; // 如果n为3,返回4

        // 创建dp数组,长度为n+1
        int[] dp = new int[n + 1];

        // 初始化dp数组
        dp[0] = 0; // 0步有0种方法
        dp[1] = 1; // 1步有1种方法
        dp[2] = 2; // 2步有2种方法
        dp[3] = 4; // 3步有4种方法

        // 动态规划计算  为2的等比数列
        for (int i = 4; i <= n; i++) {
            dp[i] = dp[i - 1]*2; // 状态转移方程
        }

        return dp[n]; // 返回结果
    }
}

全部评论

相关推荐

Elastic90:公司不要求加班,但 又不允许你准点下班,经典又当又立
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务