設計思想:
數組內有正數有負數,先遍歷尋找數組內第一個正數,並將其設置為最大值。開始往後加,一旦和是負數,就捨棄前邊的數,從當前位置繼續往後加,每一次相加後都會和最大值比較,如果小於最大值就不記錄,不然記錄為最大值。
代碼:
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); } }
截圖:
總結:
要想解決問題,先學好數學。