• 最大连续子序列


    1. 简介

    • 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解,创立了解决这类过程优化问题的新方法——动态规划。--百度百科

    2. 解决的问题

    • 最优性原理是动态规划的基础。任何一个问题,如果失去了这个最优性原理的支持,就不可能用动态规划设计求解。
      动态规划是解决最优解的问题,需要满足两个条件。
    1. 问题中的状态满足最优性原理。
    2. 问题中的状态必须满足无后效性。
      • 所谓无后效性是指:“下一时刻的状态只与当前状态有关,而和当前状态之前的状态无关,当前状态是对以往决策的总结”。

    3. 动态规划的关键

    - 递归方程 + 边界条件
    

    4. 示例

    # 最大连续子序列
    nums = [1, 2, -3, -6, 4, 5, 7]
    
    
    def maxsum(nums):
        if len(nums) == 1:
            return nums[0]
    
        dp = res = nums[0]
    
        for i in range(1, len(nums)):
            dp = max(nums[i], dp + nums[i])
            res = max(dp, res)
        return res
    
    
    res = maxsum(nums)
    print(res)
    
  • 相关阅读:
    解析python数据后用html输出
    python 自动化测试HTTP接口
    python 自动化对比返回结果
    Java 基础知识 练习
    Java 菜鸟学习之 script脚本语句
    java语言的认识
    Script 语言的简单练习题 乘法口诀
    Script 简单语句的练习题
    Java菜鸟培训第二天
    36个号码随机摇奖编码
  • 原文地址:https://www.cnblogs.com/henryw/p/11598803.html
Copyright © 2020-2023  润新知