Решение: Поиск максимального произведения
Опишите на русском языке или одном из языков программирования алгоритм поиска номера первого из двух последовательных элементов в целочисленном массиве из 30 элементов, произведение которых максимально. Если таких пар несколько, можно выбрать любую из них.
Решение по шагам
5 шаговВ массиве из 30 элементов имеется 29 пар последовательных элементов: $(a_1,a_2)$, $(a_2,a_3)$, ..., $(a_{29},a_{30})$.
Сначала принимаем произведение первой пары за максимальное и запоминаем номер первого элемента этой пары: $maxProduct = a_1 \cdot a_2$, $answer = 1$.
Затем перебираем номера первых элементов остальных пар от 2 до 29. Для каждой пары вычисляем $p = a_i \cdot a_{i+1}$.
Если $p > maxProduct$, заменяем значение максимального произведения на $p$ и запоминаем номер $i$. При равенстве можно ничего не менять, поэтому будет выбрана любая из пар с максимальным произведением.
После завершения цикла выводим сохранённый номер первого элемента искомой пары. Алгоритм выполняет 29 сравнений и имеет сложность $O(n)$, а для массива из 30 элементов использует постоянный объём дополнительной памяти.
Перебрать пары $(a_i, a_{i+1})$ для $i$ от 1 до 29, сохранить максимальное произведение и номер $i$; вывести сохранённый номер.
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют только отдельные элементы, а не произведения соседних пар.
Перебирают индекс до 30 и обращаются к несуществующему элементу $a_{31}$.
Инициализируют максимум нулём, из-за чего алгоритм может ошибиться, если все произведения отрицательны.
Выводят номер второго элемента пары вместо номера первого.
Сравнивают только абсолютные значения произведений, хотя требуется максимальное обычное произведение.