要求:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为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); } }