采用动态规划的方法
假设数组中有N个元素,数组中最后一个元素a[n-1]与最大子数集的关系有以下几点:
1.最大子数集包含a[n-1]
2.a[n-1]单独构成最大子数集
3.最大子数集不包含a[n-1]
代码如下:
public class Eval { // 创建类
public static int maxn(int m, int n) { //返回m,n中最大的值
return m > n ? m : n;
}
public static int max(int a[]) {
int maxn = a[0]; //用来存储最大子数集的和,先赋初值
int alln = a[0]; //用来比较单个元素和之前最大子数集的大小,先赋初值
for (int i = 1; i < a.length; i++) {
maxn = maxn(a[i] + maxn, a[i]);
alln = maxn(maxn, a[i]);
}
return alln;
}
public static void main(String[] args) {
int [] a = {1,2,-4,-5,-2,3};
System.out.println(max(a));
}
}