动态规划习题本(持续更新)
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过来的花费更小。
以上是关于动态规划习题本(持续更新)的主要内容,如果未能解决你的问题,请参考以下文章