您当前的位置: 首页 >  动态规划

庄小焱

暂无认证

  • 1浏览

    0关注

    805博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

算法问题——动态规划问题集合

庄小焱 发布时间:2020-09-05 20:49:17 ,浏览量:1

70. 爬楼梯

/**
 * Copyright (C), 2018-2020
 * FileName: 爬楼梯的基础题
 * Author:   xjl
 * Date:     2020/9/7 9:39
 * Description:
 */
package 深度优先广度优先问题;

public class 爬楼梯的基础题 {
    /**
     * 使用的递归的方法 使用的是暴力的求解
     *
     * @param n
     * @return
     */
    public int climbstairs(int n) {
        if (n == 1 || n == 2) {
            return n;
        }
        return climbstairs(n - 1) + climbstairs(n - 2);
    }

    /**
     * 记忆化递归的思想
     *
     * @param n
     * @return
     */
    public int solution(int n) {
        //这个是记忆的数组 记录是的每一个台阶的方法
        int[] memeo = new int[n + 1];
        return climbstairs1(n, memeo);
    }

    private int climbstairs1(int n, int[] memeo) {
        if (memeo[n] > 0) {
            return memeo[n];
        }
        if (n == 1 || n == 2) {
            memeo[n] = n;
        } else {
            memeo[n] = climbstairs1(n - 1, memeo) + climbstairs1(n - 2, memeo);
        }
        return memeo[n];
    }

    /**
     * 使用动态规划的思想
     *
     * @param n
     * @return
     */
    public int solution1(int n) {
        if (n == 1) {
            return 1;
        }
        //表示的是的dp[]的转态 表示的有多少种方法
        int[] dp = new int[n + 1];
        dp[1] = 1;
        dp[2] = 2;
        for (int i = 3; i             
关注
打赏
1657692713
查看更多评论
0.0708s