在一个数组中找出和最大的连续几个数。(至少包含一个数)
例如:
数组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.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] A = new int [1000];
int i;
int max=0, sum=0;
boolean tag = false;
for (i = 0; i < n; i++) {
A[i]=in.nextInt();
sum += A[i];
if (A[i] >= 0) {//均为负数tag为flase
tag = true;
}
if (sum < 0)//普通动态规划
sum = 0;
if (sum > max)
max = sum;
}
if (!tag) {//均为负数,挑选最大的负数
int max_ = A[0];
for (i = 1; i < n; i++) {
if (A[i] > max_) max_ = A[i];
}
System.out.println(max_);
} else
System.out.println(max);
}
}