求最大連續子陣列和的最大值
阿新 • • 發佈:2019-01-05
題目描述:給定一個數組A[0,....,n-1],求A的連續子陣列,使得該子陣列的和最大。
eg: 1,-2,3,10,-4,7,2,-5的最大子陣列為3,10,-4,7,2
演算法分析:
記S[i]為以A[i]結尾的陣列中和最大的子陣列,則S[i+1]=max(S[i]+A[i+1],A[i+1])
S[0] = A[0]
遍歷i:0<=i<=n-1
public static void main(String[] args) { int[] array = new int[8]; array[0] = -1; array[1] = -2; array[2] = 3; array[3] = 10;array[4] = -4; array[5] = 7; array[6] = 2; array[7] = -5; maxSubArray(array); } public static void maxSubArray(int[] array){ int max = 0; int sum = array[0]; int firstIndex = 0; int lastIndex = 0; for(int i = 1;i<array.length;i++){ if(sum > 0){ sum += array[i];}else{ sum = array[i]; firstIndex = i; } if(max < sum){ max = sum; lastIndex = i; } max = max>sum ? max : sum; } System.out.println("當前陣列中連續子陣列和最大為:" + max); for(int k = firstIndex;k<=lastIndex;k++){ System.out.println(k); } }