package com.ethjava;
import java.util.Scanner;
//这是求连续最大子序列和的问题
//实现手法是动态规划,即,如果前面几个数的和如果大于之前的max,就更新max,若sum小于0,则直接不要这些数了,设置sum=0;这是关键之处。
public class maxzixulie {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int num = sc.nextInt();
int[] a = new int[num];
for (int i = 0; i < num; i++) {
a[i] = sc.nextInt();
}
int max = a[0];//这里必须将max设为a[0],因为会出现所有数都是负数的情况
int sum = 0;
for (int i = 0; i < num; i++) {
sum = sum + a[i];
if (sum > max) max = sum;
if (sum < 0) sum = 0;//若之前的sum为负数,加上就是负担,从0开始算序列和
}
System.out.println(max);
}
}
}