第21题:最大子阵列
时间限制 1000 ms 内存限制 10000 K
在一个数组中找出和最大的连续几个数。(至少包含一个数)
例如:
数组A[] = [−2, 1, −3, 4, −1, 2, 1, −5, 4],则连续的子序列[4,−1,2,1]有最大的和6.
格式:
第一行输入一个数字n,
第二行输入A[n],最后输出最大的和。
样例输入
3
1 1 -2
样例输出
2
import java.util.Arrays;
import java.util.Scanner;
import sun.misc.Sort;
public class Main{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int[] A = new int[n];
for (int i = 0; i < n; i++) {
A[i] = scan.nextInt();
}
int sum = A[0], temp = 0;
for (int i = 0; i < n; i++) {
temp += A[i];
if (temp <= 0) {
temp = 0;
}
if (sum < temp) {
sum = temp;
}
}
Arrays.sort(A);// 对于全是负数的情况
if (A[A.length - 1] < 0) {
sum = A[A.length - 1];
}
System.out.println(sum);
}
}