Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Найти максимум среди сумм трех соседних элементов в массиве / 8 сообщений из 8, страница 1 из 1
29.10.2020, 14:36
    #40013052
x17.mstu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти максимум среди сумм трех соседних элементов в массиве
подскажите как оптимально решить задачу. Предполагается два цикла - один внешний который будет идти по парно , другой внутренний считающий сумму в парах . так ?

Не понятно как написать внешний цикл который будет считать что пара - это именно когда есть предыдущий элемент и последующий и именно для нее нужно произвести сумму


Создать новый массив размера 100 и заполнить его случайными числами из диапазона от 0 до 10000.
Найти максимум среди сумм трех соседних элементов. Для найденной тройки с максимальной суммой выведите значение суммы и индекс первого элемента тройки.

Пример:
*Для простоты пример показан на массиве размера 10

[1, 456, 1025, 65, 954, 2789, 4, 8742, 1040, 3254]

Тройка с максимальной суммой: [8742, 1040, 3254]

Вывод в консоль:
13036
7
...
Рейтинг: 0 / 0
29.10.2020, 15:21
    #40013073
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти максимум среди сумм трех соседних элементов в массиве
один цикл - на каждом шаге просто добавляешь к текущему элементу следующие два и проверяешь сумму. только нужно учесть, что следующие два будут существовать не всегда, в худшем случае никогда (если размер массива меньше 3).
...
Рейтинг: 0 / 0
29.10.2020, 15:51
    #40013091
x17.mstu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти максимум среди сумм трех соседних элементов в массиве
chpasha, Но чтобы вывести Тройку с максимальной суммой и индекс: [8742, 1040, 3254]
нужен же цикл еще один внешний?
...
Рейтинг: 0 / 0
29.10.2020, 15:58
    #40013096
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти максимум среди сумм трех соседних элементов в массиве
а ну вывести конечно, просто вывод это уже формальности. но для нахождения такой тройки нужен только один цикл (хотя если бы в условии была сумма 10 рядом стоящих элементов или 100 или по условию кол-во элементов это изменяемый параметр, то уже нужен был бы второй цикл для подсчета)
...
Рейтинг: 0 / 0
29.10.2020, 16:58
    #40013120
НеофитSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти максимум среди сумм трех соседних элементов в массиве
x17.mstu
подскажите как оптимально решить задачу. Предполагается два цикла - один внешний который будет идти по парно , другой внутренний считающий сумму в парах . так ?

Не понятно как написать внешний цикл который будет считать что пара - это именно когда есть предыдущий элемент и последующий и именно для нее нужно произвести сумму


Создать новый массив размера 100 и заполнить его случайными числами из диапазона от 0 до 10000.
Найти максимум среди сумм трех соседних элементов. Для найденной тройки с максимальной суммой выведите значение суммы и индекс первого элемента тройки.

Пример:
*Для простоты пример показан на массиве размера 10

[1, 456, 1025, 65, 954, 2789, 4, 8742, 1040, 3254]

Тройка с максимальной суммой: [8742, 1040, 3254]

Вывод в консоль:
13036
7


> подскажите как оптимально решить задачу.
Недостаточно данных. Оптимально по какому параметру?

Самый простой для понимания:
- создать второй массив размера 98 элементов (100-2)
- поместить в него суммы троек (один цикл)
- найти максимум во втором массиве (второй цикл).

Совместить два цикла: шаги 2 и 3 в одном цикле, второй массив не нужен.

Если все еще непонятно, напишите код инициализации массива, я напишу цикл.

П.С. уточните условие максимума, их может быть несколько. Первый? Последний? Любой? Что ожидается от 0,0,0,0,0,0,0 ?
...
Рейтинг: 0 / 0
29.10.2020, 18:10
    #40013154
yvprod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти максимум среди сумм трех соседних элементов в массиве
x17.mstu
подскажите как оптимально решить задачу. Предполагается два цикла - один внешний который будет идти по парно , другой внутренний считающий сумму в парах . так ?

7


Что значит сумма в парах, если сумма для тройки?

i индекс элемента, i++. i<количество элементов -2

Сравниваешь для каждой итерации сумму с текущим максимумом, индекс сохраняешь в еще одну переменную, тройку тоже в переменные затолкай если нужно

Или я чего то не понял?
...
Рейтинг: 0 / 0
29.10.2020, 19:38
    #40013199
graycode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти максимум среди сумм трех соседних элементов в массиве
x17.mstu,

У вас две задачи в одном сообщении или одна?

Как пары вдруг стали тройками?

Если нужна максимальная сумма трех элементов, тогда в одном цикле окном в три элемента проходите по набору данных:
инициализируем сумму минимальным значением инта (если это инты) или 0.

[1, 456, 1025, 65, 954, 2789, 4, 8742, 1040, 3254]
1-я итерация
индекс 0, сумма 1+456+1025, сохраняем сумму и индекс, если рассчитанная больше сохраненной
2-я итерация
индекс 1, (сумма -1+ 65) или (456 + 1025 + 65), сохраняем сумму и индекс, если рассчитанная больше сохраненной
и т.д.
до тех пор пока третий элемент существует, т.е. (i = 0; i < длина массива - 2; i ++)

выводим результат.
...
Рейтинг: 0 / 0
30.10.2020, 03:46
    #40013321
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти максимум среди сумм трех соседних элементов в массиве
достаточно одного цикла

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
import java.util.*;
class A{
    public static void main(String [] args){
        List<Integer> a = Arrays.asList(1, 456, 1025, 65, 954, 2789, 4, 8742, 1040, 3254);
        int trioIndex = -1; //not found
        int trioMaxSum = Integer.MIN_VALUE; //minimal value
        for(int i=0; i<a.size()-2; i++){
            int currentSum = a.get(i)+a.get(i+1)+a.get(i+2);
            if(currentSum>trioMaxSum) {
                trioMaxSum = currentSum;
                trioIndex = i;
            }
        }
        if(trioIndex>=0){
            System.out.println("index = "+trioIndex);
            System.out.println("trio  = "+a.subList(trioIndex,trioIndex+3));
            System.out.println("sum   = "+trioMaxSum);
        }else{
            System.out.println("not found");
        }
    }
}
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Найти максимум среди сумм трех соседних элементов в массиве / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]