Я только что написал свою программу, которая находит максимальную сумму из массива, но я застрял в том, есть ли способ, с помощью которого я могу найти, какие числа способствовали максимальной сумме?
ПравилоМаксимальная сумма указана: никакие соседние элементы не должны вносить вклад в сумму.
Мое решение для максимальной суммы в массиве:
public class MaximumELementInARray {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
String[] al = reader.nextLine().split(" ");
int[] input = Arrays.stream(al).mapToInt(Integer::parseInt).toArray();
MaximumELementInARray mm = new MaximumELementInARray();
int maxi = mm.maximumm(input);
System.out.println(maxi);
}
public int maximumm(int[] a) {
List<Integer> ex = new ArrayList<>();
List<Integer> inc = new ArrayList<>();
int incl = a[0];
int excl = 0;
int excl_new;
for (int i = 1; i < a.length; i++) {
excl_new = Math.max(incl, excl);
incl = excl + a[i];
excl = excl_new;
}
System.out.println(incl > excl ? inc : ex);
return incl > excl ? incl : excl;
}
}
Теперь в функции maximum
есть настройкакуда я могу поместить все индексы элементов, составляющих максимальную сумму?
Ввод:
-1 7 8 -5 4 9 -2 3
Вывод:
20
**
Мне нужно, как было 20 прибыл.Ответ должен сказать: 8+9+3
**
Я считаю, что в максимальной функции мы могли бы поместить Arraylist и записать, какие элементы вносят вклад в сумму, но я не могу реализовать.
Я сделал два Arraylist:
List<Integer> ex = new ArrayList<>();
List<Integer> inc = new ArrayList<>();
Ввод: -1 7 8 -5 4 Выход: 12 Сумма состоит из 8 + 4
Ввод: 3 2 1 -1 Выход: 4 Сумма состоит из 3 + 1
и т. Д. *