子数组最大和
我用的是最直接的方法,现将所有的子数组的和求出来。将其存储到新的数组里,然后对其进行比较。但这样的时间复杂度不为O(n)。
package shuzuhe;
import java.util.Scanner;
public class he2 {
public static void main(String args[])
{
Scanner s=new Scanner(System.in);
System.out.println("请输入数组数目:");
int sum=s.nextInt();
int []a=new int[sum];
System.out.println("请输入"+sum+"个数:");
for(int i=0;i<sum;i++)
{
a[i]=s.nextInt();
}
s.close();
int sum1=0;
for(int i=1;i<=sum;i++)
{
sum1=sum1+i;
}
int [] b=new int[sum1];
int temp1=0;
for(int i=0;i<sum;i++)
{
int temp=0;
for(int k=0;k<sum-i;k++)
{
temp=temp+a[i+k];
b[temp1]=temp;
temp1++;
}
}
for(int i=0;i<sum1-1;i++)
for(int k=0;k<sum1-1-i;k++)
{
if(b[k]<b[k+1])
{
int temp2=b[k];
b[k]=b[k+1];
b[k+1]=temp2;
}
}
System.out.println("最大的子数组和为"+b[0]);
}
}