public class LargestSubsetSum {private int startIndex;private int endIndex;private int maxSubSetSum;public void findLargestSubSetSum(int[] inputArr) {startIndex = 0;endIndex = 0;maxSubSetSum = inputArr[0];int i = 1;int sum = 0;int candidateStartIndex = 1;while (i < inputArr.length) { sum += inputArr[i]; if (sum > maxSubSetSum) { startIndex = candidateStartIndex; endIndex = i; maxSubSetSum = sum; } if(sum < 0){ sum = 0; candidateStartIndex = i+1; } i++; }}public void printResult() {System.out.println("Max subset sum : " + maxSubSetSum);System.out.println("Start index : " + startIndex);System.out.println("End Index : " + endIndex);}public static void main(String[] args) {LargestSubsetSum largestSubsetSum = new LargestSubsetSum();int[] inputArr = { 1, 2, -5, 4, 5, -1, 2, -11 };largestSubsetSum.findLargestSum(inputArr);largestSubsetSum.printResult();}}
public class LargestSubsetSum {
ReplyDeleteprivate int startIndex;
private int endIndex;
private int maxSubSetSum;
public void findLargestSubSetSum(int[] inputArr) {
startIndex = 0;
endIndex = 0;
maxSubSetSum = inputArr[0];
int i = 1;
int sum = 0;
int candidateStartIndex = 1;
while (i < inputArr.length) {
sum += inputArr[i];
if (sum > maxSubSetSum) {
startIndex = candidateStartIndex;
endIndex = i;
maxSubSetSum = sum;
}
if(sum < 0){
sum = 0;
candidateStartIndex = i+1;
}
i++;
}
}
public void printResult() {
System.out.println("Max subset sum : " + maxSubSetSum);
System.out.println("Start index : " + startIndex);
System.out.println("End Index : " + endIndex);
}
public static void main(String[] args) {
LargestSubsetSum largestSubsetSum = new LargestSubsetSum();
int[] inputArr = { 1, 2, -5, 4, 5, -1, 2, -11 };
largestSubsetSum.findLargestSum(inputArr);
largestSubsetSum.printResult();
}
}