思路:一个栈表示当前元素结尾的最大和,一个栈表示当前元素和之前元素相加的当前和,如果当前和<0,说明之后的元素与它相加一定更小,所以就以它之后的元素为原点重新计数,故最后序列为重新计数的元素到最大序列和所在的元素
不能使用动态规划的原因:虽然看起来当前元素结尾的最大和与上一个元素结尾的最大和有关,但是因为要求序列连续,及上一个元素不一定在其最大序列的结尾,故直接使用上一个元素的最大和+当前元素,会造成不连续的问题,如果不要求连续,则可以使用动态规划
代码示例:
思路:一个栈表示当前元素结尾的最大和,一个栈表示当前元素和之前元素相加的当前和,如果当前和<0,说明之后的元素与它相加一定更小,所以就以它之后的元素为原点重新计数,故最后序列为重新计数的元素到最大序列和所在的元素
不能使用动态规划的原因:虽然看起来当前元素结尾的最大和与上一个元素结尾的最大和有关,但是因为要求序列连续,及上一个元素不一定在其最大序列的结尾,故直接使用上一个元素的最大和+当前元素,会造成不连续的问题,如果不要求连续,则可以使用动态规划
代码示例: