设计思想
从第一个元素开始循环,在嵌套另一个循环,从每个元素开始,依次加上后边的元素,当和大于最大值时,把和赋值给最大值,并记录此时的首元素的下标和尾元素的下标,输出这几个元素,和他们的和。
public class Max {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[]={1,9,-5,6,-4,3};
int start = 0,end = 0;
int max = a[0],sum = a[0];
for(int i=0;i<a.length;i++)
{
sum = a[i];
if(sum > max)
{
max = sum;
start = i;
end = i;
}
for(int j=i+1;j<a.length;j++)
{
sum+=a[j];
if(sum > max)
{
max = sum;
start = i;
end = j;
}
}
}
System.out.println("该数组是:");
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
System.out.println("最大子数组的和是:"+max);
System.out.println("最大子数组为:");
for(int i = start;i<=end;i++)
{
System.out.print(a[i]+" ");
}
}
}
运行截图