public class MyTest {
public static void main(String[] args) {
int[] a = {-1,2,3,50,-16,1,20,-12};
int maxSum = 0;
int first = 0;
int last = 0;
for(int i=0; i<a.length; i++){
for(int j = i; j< a.length; j++){
int thisSum = 0;
for(int k = i; k <= j ; k++){
thisSum += a[k];
}
if(thisSum > maxSum){
maxSum = thisSum;
last = j;
first = i;
}
}
}
System.out.println("起始位置:"+first);
System.out.println("终止位置:"+last);
System.out.println(maxSum);
}
public static void main(String[] args) {
int[] a = {-1,2,3,50,-16,1,20,-12};
int maxSum = 0;
int first = 0;
int last = 0;
for(int i=0; i<a.length; i++){
for(int j = i; j< a.length; j++){
int thisSum = 0;
for(int k = i; k <= j ; k++){
thisSum += a[k];
}
if(thisSum > maxSum){
maxSum = thisSum;
last = j;
first = i;
}
}
}
System.out.println("起始位置:"+first);
System.out.println("终止位置:"+last);
System.out.println(maxSum);
}
}
输出结果:
起始位置:1
终止位置:6
60
时间复杂度:O(N^3)