设计思想:先输入要输入的数组的元素的个数,然后输入该数组的所有元素,将所有连续元素的正整数作为一个子集,然后算出所有子集的和,然后逐渐比较算出最大子集的和
出现的问题是 时间复杂度较高不是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]);
}
}