思路:分别计算从第i个数字开始的子数组的最大值,将所有的最大值保存在一个新的数组中,再找出新数组中的最大值,即为这个整数数组中最大子数组,但是距离要求还有很大的差距,下次更新时间复杂度为o(n)的方法。
package a; import java.util.*; public class m { static Scanner sc=new Scanner(System.in); public static void main(String[] args) { // TODO Auto-generated method stub int a; System.out.println("请输入数组长度"); a=sc.nextInt(); int l[]=new int [a];//定义规定长度的整型数组 System.out.println("请输入数组元素"); for(int i=0;i<a;i++) { l[i]=sc.nextInt(); } int i,j,k; int max[]=new int [a]; for(i=0;i<a;i++){ max[i]=l[i]; k=l[i]; for(j=i+1;j<a;j++){ k=k+l[j]; if(k>max[i]) { max[i]=k; } } } int m=max[0]; for(i=1;i<a;i++) { if(max[i]>m) { m=max[i]; } } System.out.println("所有子数组的和的最大值为"+m); } }