计蒜客--第21题:最大子阵列

来源:互联网 发布:网络媒介素养报告 编辑:程序博客网 时间:2024/05/30 12:30

第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);    }}
0 0
原创粉丝点击