从一组数据中找出连续的一段数,使得这段数的和最大。
package pack1;
import java.util.Scanner;
public class MaxSubset {
public static void main(String[] args) {
try(Scanner input = new Scanner(System.in);) {
System.out.print("Enter number: ");
int[] array = new int[input.nextInt()];
System.out.println("Enter " + array.length + " numbers: ");
for (int i = 0; i < array.length; i++)
array[i] = input.nextInt();
System.out.println("The max value is " + getMaxSubsetValue(array));
}
}
/**返回子段的最大和*/
public static int getMaxSubsetValue(int[] array) {
int subsetValue = 0; //子段的最大和
for (int i = 0; i < array.length; i++) { //遍历0 ~ array.length - 1
int max = 0; //每次循环,max置为0
for (int j = i; j < array.length; j++) { 遍历i ~ array.length - 1
max += array[j]; //max进行累加
if (max > subsetValue) subsetValue = max;
//如果max大于subsetValue, subsetValue = max
}
}
return subsetValue;
}
}