设计思想:先输入要输入的数组的元素的个数,然后输入该数组的所有元素,将所有连续元素的正整数作为一个子集,然后算出所有子集的和,然后逐渐比较算出最大子集的和
出现的问题是 时间复杂度较高不是o(n),而是o(n方);
接下来还有继续的改进。
package test; import java.util.Scanner; public class test { public static void main(String args[]) { Scanner sc=new Scanner(System.in); System.out.println("请输入数组个数:"); int n=sc.nextInt(); int []a=new int[n]; System.out.println("请输入要输入数组:"); for(int i=0;i<n;i++) { a[i]=sc.nextInt(); } sc.close(); int n1=0; for(int i=1;i<=n;i++) { n1=n1+i; } int [] b=new int[n1];//子集数组的和 int m1=0; for(int i=0;i<n;i++) { int m=0; for(int k=0;k<n-i;k++) { m=m+a[i+k]; b[m1]=m; m1++; } } for(int i=0;i<n1-1;i++) for(int k=0;k<n1-1-i;k++) { if(b[k]<b[k+1]) { int m2=b[k]; b[k]=b[k+1]; b[k+1]=m2; } } System.out.println("最大的子数组和为"+b[0]); } }