subsequen sum
code as below:
package com.sync.demo;
public class MaxSubSum {
public static void main(String[] args) {
Long [] array = new Long[]{7l,5l,3l,4l,5l,7l,5l,3l,4l,5l,7l,5l,3l,4l,5l,7l,5l,3l,4l,5l};
long startTime = System.currentTimeMillis();
long result = maxSubSum01(array);
long endTime = System.currentTimeMillis();
System.out.println("max sum sequence="+result+" total time="+(endTime-startTime));
}
public static long maxSubSum01(Long[] array){
long maxSum = 0l; //max sum
for (int i =0 ;i <array.length;i++) { //first loop
System.out.println("out loop ,index:"+i);
for (int j = i ; j<array.length;j++) { //loop each element for array
System.out.println("inner loop ,index:"+j);
long subMaxSum = 0;
for (int k =i; k<=j;k++) { //loop each subSequence
subMaxSum += array[j].longValue(); // sum subSequence
}
System.out.println(subMaxSum);
if(subMaxSum > maxSum){
maxSum = subMaxSum;
}
}
}
return maxSum;
}
public static long maxSubSum02(Long[] array){
long maxSum = 0l; //max sum
for (int i =0 ;i <array.length;i++) { //first loop
System.out.println("out loop ,index:"+i);
long subMaxSum = 0;
for (int j = i ; j<array.length;j++) {
subMaxSum += array[j].longValue();
System.out.println(subMaxSum);
if(subMaxSum > maxSum){
maxSum = subMaxSum;
}
}
}
return maxSum;
}
}