动态规划习题本(持续更新)

Posted 化作孤岛的瓜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划习题本(持续更新)相关的知识,希望对你有一定的参考价值。

1.求连续数组的最大和:

力扣

public static int maxSubArray(int[] nums) {

           //当前最大值

           int pre = 0;

           int max = nums[0];

           for (int temp : nums) {

                pre = Math.max(pre + temp, temp);

                max = Math.max(pre, max);

           }

           return max;

     }

动态规划思路:

求当前f(i-1) + nums[i]   和 nums[i]的最大值

 f(i)=max{f(i−1)+nums[i],nums[i]}

2.经典题: 爬楼梯的最少成本  

力扣

    

public int minCostClimbingStairs(int[] cost) {

          int[] dp = new int[cost.length + 1];

        dp[0] = dp[1] = 0;

        for (int i = 2; i <= cost.length; i++) {

            dp[i] = Math.min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);

        }

        return dp[cost.length];

    }

动态规划思路:

1.假设数组dp[cost.length+1] 为到达当前下标所需花费的最小值 数组,之所有长度+1是因为到达末尾下表以后还有加上末尾下标的值。

2.因为可以从下标0或者1开始,所以到达下标0或者1的花费都是0

3.从下标2开始,进行最小值判断,判断是从i-2还是从i-1过来的花费更小。

以上是关于动态规划习题本(持续更新)的主要内容,如果未能解决你的问题,请参考以下文章

动态规划习题本(持续更新)

LeetCode动态规划题总结持续更新

动态规划复习(持续更新)

动态规划之背包问题(持续更新)

0x56. 动态规划 - 状态压缩DP(习题详解 × 7)

leetcode动态规划题组笔记以及总结(持续更新)