設計思想:
數組內有正數有負數,先遍歷尋找數組內第一個正數,並將其設置為最大值。開始往後加,一旦和是負數,就捨棄前邊的數,從當前位置繼續往後加,每一次相加後都會和最大值比較,如果小於最大值就不記錄,不然記錄為最大值。
代碼:
import java.util.Random;
public class ArrayAdd {
public static void main(String args[]){
int a[]=new int[10];
for(int i=0;i<10;i++)
{
a[i]=new Random().nextInt()%30;
System.out.print(a[i]+" ");
}
System.out.println();
int max=0;
int Sum=0;
int Start=0;
int start=0;
int end=0;
for(int i=0;i<10;i++)
{
if(i==0)
{
Sum=max=a[i];
continue;
}
if(Sum<0)
{
Sum=0;
Start=i;
}
Sum+=a[i];
if(Sum>max)
{
max=Sum;
start=Start;
end=i;
}
}
System.out.println("和最大的子數組為:");
for(int i=start;i<=end;i++)
{
System.out.print(ary[i]+"+");
}
System.out.print("="+max);
}
}
截圖:

總結:
要想解決問題,先學好數學。