题目描述
给定n个整数(可能是负数)组成的序列a[1], a[2], a[3], …, a[n],求该序列的子段和如a[i]+a[i+1]+…+a[j]的最大值。
输入
每组输入包括两行,第一行为序列长度n,第二行为序列。
输出
输出字段和的最大值。
样例输入 Copy
5
-1 0 1 2 3
样例输出 Copy
6
package book;
import java.util.Scanner;
/*
* 最大字段和
*/
public class 最大字段和 {
static int n;
static int array[];
static int res[];
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
array=new int[n];
res=new int[n];
for(int i=0;i<n;i++) {
array[i]=sc.nextInt();
}
slove();
}
private static void slove() {
res[0]=array[0];
int maxsum=res[0];
for(int i=1;i<n;i++) {
if(res[i-1]>0) {
res[i]=res[i-1]+array[i];
}else {
res[i]=array[i];
}
if(res[i]>maxsum) {
maxsum=res[i];
}
}
System.out.println(maxsum);
}
}