个人作业2 数组

要求:

输入一个整形数组,数组里有正数也有负数。

数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

求所有子数组的和的最大值。要求时间复杂度为O(n)

package shuzu;
import java.util.*;
public class shuzuu{
    public static void main(String[] args)
    {
        Scanner input=new Scanner(System.in);
        int n=0;
        System.out.print("输入数的个数:");
        n=input.nextInt();
        System.out.print("输入"+n+"个数:");
        int a[]=new int[5];
        for(int i=0;i<5;i++) {               
            a[i]=input.nextInt();
        }                     
        int max[]=new int[a.length];
        for(int i=0;i<max.length;i++) {
            max[i]=0;
        }
        int sum=0;
        for(int i=0;i<a.length;i++) {          
            max[i]=a[i];
            sum=max[i];
            if(i<a.length) {
                for(int j=i+1;j<a.length;j++) {
                    sum=sum+a[j];
                    if(max[i]<sum)max[i]=sum;
                }
            }
        }
        int max1=max[0];
        for(int i=1;i<max.length;i++) {
            if(max1<=max[i]) {
                max1=max[i];
            }
        }
        System.out.println(max1);
    }
}

原文地址:https://www.cnblogs.com/jbwen/p/11071610.html