http://dingke16.blog.163.com/blog/static/118554878200962825035633/
简单来说,就是从左、从右各做一次最大连续子序列的操作,然后综合两个结果即可。
在输入的同时,进行一次DP,计算出从左到右的最大值,并把它保存在数组dp的对应的下标 元素中,这样之后,对于下标为i的元素,它其中保存的便是前面所 有元素可能的最大连续和。再从右到左进行一次DP,计算从右到左的最大连续和。假设此时已经算到下标为i的元素,那么将sum+dp[i-1]与ans进 行比较,使ans取最大值。因为第一次与第二次分别求出了,i之前(不包括i)和i之后(包括i)的最大子段和,ans就是以i为分界这样的最优解中的最大值。