设计思想
五个数,依次从每个数开始加,最多加五个数,如果和比之前的和大,记录此时是第几个数,并记录此时已经加了几个数,一直循环,直到找到子数组和最大的一组,并找出此时的子数组。
public class Xunhuan {
public static void main(String[] args)
{
int a[]={2,3,-8,1,-4};
int b[]={2,3,-8,1,-4,2,3,-8,1};
int sum=0;
int max=b[0]; //最大子数组的和
int t1=0;
int z=0;
int t=0; //从t个数开始,和之后的z个数
for(int i=0;i<5;i++)
{
t1=0;
sum=0; //从每个数开始,总和清空
for(int j=0;j<5;j++)
{
sum+=b[j+i];
if(sum>max)
{
max=sum; //记下最大的和,并记下此时加的数的个数
t1=j;
z=t1; //由于t1经常变,所以要记录每次加的数的个数
t=i;
}
}
}
System.out.println("最大数组和为:"+max);
System.out.print("最大子数组为{");
for(int i=t;i<t+z;i++)
System.out.print(b[i]+",");
System.out.println(b[t+z]+"}");
}
}
运行截图