问题描述
给定n个整数(可能为负数)组成的数组array={array[1],array[2],array[3],…,array[n]},求该序列如array[i]+array[i+1]+…+array[j]的子段和的最大值。
算法思路
假设现有一个数组sums,sums[i]用来保存数组array中第i个位置以前的最大字段和,如果sums[i-1]+array[i]大于array[i],那么sums[i]=sums[i-1]+array[i]否则sums[i]=array[i],即递推公式如下sums[i]=Max{sums[i]+array[i],array[i]} (0<=i<=(array.length-1)),然后在sums数组中找到最大值即可。因为数组0号元素没有前一个,故0号位置以前的最大字段和就是其本身
根据算法思路,代码如下
代码
public static int FindGreatestSumOfSubArray(int[] array) {
int[] sums=new int[