Как решить задачу линейным алгоритмом? Задачу решить могу, но вообще не выкупаю, почему в первом тесте ответ 2 5, а не 1 4: Отношение Дан массив a1,a2,...an. Необходимо выбрать в нём два элемента ai и aj, такие что i

17 Сен 2022 в 19:52
190 +2
0
Ответы
1

Для решения этой задачи линейным алгоритмом можно использовать следующий подход:

Создать переменные для хранения индексов элементов i и j.Создать переменные для хранения максимального отношения и минимального элемента.Проитерироваться по массиву от начала до конца.Если текущий элемент больше минимального элемента, но отношение между текущим элементом и минимальным больше максимального отношения, то обновить максимальное отношение и индексы i и j.Обновить минимальный элемент, если текущий элемент меньше.

Пример кода на Python:

n = intinput()input()input() arr = listmap(int,input().split())map(int, input().split())map(int,input().split())
max_ratio = 0
min_element = arr000 result_i = 0
result_j = 0
for i in range1,n1, n1,n:
if arriii > min_element and arriii / min_element > max_ratio:
max_ratio = arriii / min_element
result_i = arr.indexminelementmin_elementmine lement + 1
result_j = i + 1
if arriii < min_element:
min_element = arriii
if max_ratio > 1:
printresulti,resultjresult_i, result_jresulti ,resultj else:
print0,00, 00,0

Этот алгоритм проходит по массиву только один раз, что делает его линейным.

16 Апр 2024 в 17:56
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир