DynamicPlanning

2020/12/13 10:00
阅读数 21

动态规划


动态规划的特点

  • 是求解决策过程最优化的过程。
  • 适用于求解将过程分成若干个互相联系的阶段,在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果。
  • 各阶段决策依赖于当前面临的状态,又影响以后的发展。
  • 当各个阶段决策确定后,就组成一个决策序列。我们可以从决策序列中找到最优解

LeetCode 53

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。


示例

输入: [-2,1,-3,4,-1,2,1,-5,4]

输出: 6

解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。




解题思路

class Solution(object):
    def maxSubArray(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        length = len(nums)
        dp = [0]*length
        dp[0] = nums[0]
        for i in range(1,length):
            if dp[i-1]<=0:
                dp[i]=nums[i]
            else:
                dp[i] = dp[i-1] + nums[i]
        return max(dp)

获取在每一个位置上的最佳效果。如果上一效果为增益,则此次累加上一效果。如果上一效果为减益,则此次不累加上衣效果。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部