问题 F: 最大子段和
[命题人 : 201501010119]
时间限制 : 1.000 sec 内存限制 : 128 MB
题目描述
给定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
import java.util.Scanner;
public class Main {
static int b[];
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
int n=sc.nextInt();
int a[]=new int[n];
for(int i=0;i<n;i++) {
a[i]=sc.nextInt();
}
b=new int[n];
int p=Biggest(a,n);
System.out.println(p);
}
}
private static int Biggest(int[] a, int n) {
// TODO Auto-generated method stub
b[0]=a[0];
int Max=b[0];
for(int i=1;i<n;i++) {
b[i]=Math.max(a[i],a[i]+b[i-1]);
if(b[i]>Max) {Max=b[i];}
}
return Max;
}
}