实践题目
7-2 最大子段和
问题描述
给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],...,a[n],求该序列如a[i]+a[i+1]+...+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。
要求算法的时间复杂度为O(n)。
算法描述
将每一个数是否列入当前子段作为一个决策,
1.如果加上这个数后子段和仍然大于0,那么加上这个数
2.如果加上这个数后子段和小于0,那么子段清零,下一个数作为新的子段的开始
在这个过程中记录遇到的最大子段和
算法时间及空间复杂度分析(要有分析过程)
该算法中只有一个 for循环语句,因此时间复杂度为O(n),满足题目要求。
空间复杂度为O(n)。
心得体会(对本次实践收获及疑惑进行总结)
解决最大子段和问题,进一步加深对动态规划算法的理解与运用。
code:
原文:https://www.cnblogs.com/bigghost/p/11713280.html