1 public int maxSubArray(int[] A) { 2 int newsum=A[0]; 3 int max=A[0]; 4 for(int i=1;i<A.length;i++){ 5 newsum=Math.max(newsum+A[i],A[i]); 6 max= Math.max(max, newsum); 7 } 8 return max; 9 }
1 int maxSubArray(int *a, const int length) 2 { 3 int maxSumSubArray = 0; 4 int sum_i = 0; 5 for(int i=0; i <length; i++) 6 { 7 sum_i = sum_i + a[i]; 8 if(sum_i < 0) sum_i = 0; 9 else 10 { 11 if(sum_i > maxSumSubArray) maxSumSubArray = sum_i; 12 } 13 } 14 15 //若是数组中的元素均为负值 16 if(sum_i==0) 17 { 18 for(int i=0; i < length; i++) 19 { 20 if(a[i] > maxSumSubArray) maxSumSubArray = a[i]; 21 } 22 } 23 return maxSumSubArray; 24 }
原文:http://www.cnblogs.com/verlen11/p/4432902.html