Advertisement

算法设计——动态规划的最大字段和问题

阅读量:

动态规划作为一种系统分析方法,在解决问题时通常采取自底向上的策略。
对于这n个单元而言,在直接处理时存在一定难度。
因此我们需要逐步减少单元的数量,则从n-1个单元开始分析,
依次递减至仅剩1个单元。
在逐步缩减的过程中发现:
每个子系统的最优决策结果能够纳入到整体系统的优化中;
次而在这一过程中会出现多个子系统拥有相同的优化目标。
因此这种特性使得动态规划成为解决这类优化问题的有效方法。

思想:
依次遍历字段序列表中的每一个元素,在循环过程中动态维护两个变量:当前的最大子数组和 b_i 以及全局的最大子数组和 max_sum。
初始化时将第一个元素作为初始最大子数组和 b_1 = a_1。
对于后续的每一个元素 a_i(i从2开始),根据以下规则更新当前最大子数组和 b_i:
若前一时刻的最大子数组和 b_{i-1} 大于零,则将其与当前元素相加得到新的候选子数组之和;否则重置当前最大子数组之和为当前元素 a_i 的值。
同时,在每次更新后比较候选子数组之和与当前最大子数组之和,并选择较大的那个作为新的 b_i 值。
最终得到的全局最大子数组即为所求的结果。

复制代码
    #include<iostream>
    using namespace std;
    
    long long Max

全部评论 (0)

还没有任何评论哟~