Как найти второй максимум с
Перейти к содержимому

Как найти второй максимум с

  • автор:

Условие

Последовательность состоит из различных натуральных чисел и завершается числом 0. Определите значение второго по величине элемента в этой последовательности. Гарантируется, что в последовательности есть хотя бы два элемента.

Решение

first_max = int(input()) second_max = int(input()) if first_max < second_max: first_max, second_max = second_max, first_max element = int(input()) while element != 0: if element >first_max: second_max, first_max = first_max, element elif element > second_max: second_max = element element = int(input()) print(second_max)

Комментарии

Аноним :

Не работает на последовательности
2
1
0

Ошибка сервера в приложении ‘/’.

Описание: На сервере возникла ошибка приложения. Текущая пользовательская настройка ошибок для этого приложения не позволяет удаленно просматривать сведения об ошибке данного приложения (из соображений безопасности). Однако, сведения можно просматривать в браузерах, запущенных на локальном сервере.

Сведения: Для разрешения просмотра сведений данного сообщения об ошибке на локальном сервере создайте тег в файле конфигурации «web.config», который находится в корневом каталоге текущего веб-приложения. В теге следует задать атрибут «mode» со значением «Off».

Примечания: Отображаемую в данный момент страницу ошибок можно заменить на пользовательскую страницу ошибок, изменив атрибут «defaultRedirect» тега конфигурации приложения таким образом, чтобы он содержал URL-адрес пользовательской страницы ошибок.

Найти второй максимум

Author24 — интернет-сервис помощи студентам

Дан массив из nn элементов, необходимо определить максимальный элемент массива и элемент, являющийся максимальным без учёта этого элемента.

Формат входных данных

В первой строке вводится натуральное число nn (2≤n≤1002≤n≤100). Во второй через пробел вводятся nn элементов массива. Все числа целые и по модулю не превосходят 10001000.

Формат выходных данных

В качестве ответа выведите два числа — искомые элементы.

входные данныевыходные данные
6
1 3 2 7 6 4
7 6

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Найти второй максимум в последовательности чисел
Дана последовательность целых чисел, оканчивающаяся нулём. Необходимо найти число, наиболее близкое.

Найти второй максимум в двоичном дереве поиска
Собственно, в задаче не проходит один тест. Условие: Выведите второй по величине элемент в.

Найти второй максимум бинарного дерева поиска
Прошу написать какие-нибудь извращенные входные данные для бинарного дерева поиска. Не проходит 7.

Второй максимум
Дан массив из n элементов, необходимо определить максимальный элемент массива и элемент, являющийся.

10 / 59 / 21
Регистрация: 12.03.2017
Сообщений: 514

Лучший ответ

Сообщение было отмечено Coolret2018 как решение

Решение

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
#include #include using namespace std; int main(int argc, char *argv[]) { int i, n, a, max1, max2, f = 0; cin >> n; cin >> max1; for (i = 1; in; i++) { cin >> a; if (f == 0) { if (a >= max1) { max2 = max1; max1 = a; } else max2 = a; f = 1; } else { if (a >= max1) { max2 = max1; max1 = a; } else if (a > max2) max2 = a; } } cout   <" "; cout   ; system("PAUSE"); return 0; }

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Найти максимум в диагонали матрицы и перевернуть строки, в которых есть этот максимум
Найти максимум в диагонали матрицы и перевернуть строки, в которых есть этот максимум. Вот.

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

Найти максимум
Помогите советом начинающему, не могу понять в чём логическая ошибка. Есть у меня такая функция.

найти максимум из x[1]. x[n]
нужно сделать ету програму на класах, помогите пожалуста!

Или воспользуйтесь поиском по форуму:

Как найти второй максимум с

задание найти второй максимум в матрице. Есть вот такой алгоритм:
1. находим MAX1;
2. Заменяем его на заведомо малое число;
3. Повторяем процедуру поиска.

Если я напишу вот так:

 m1=0; for(int i=0;im1) > a[i][j]=0; >

Какие в этом случае обнулится максимальный элемент матрицы или в процессе поиска обнулятся все элементы матрицы, которые больше нуля?

спят подружки вредные безмятежным сном,
Снятся мышкам хлебные крошки под столом, Буратинам — досточки, кошкам — караси,
Всем собакам — косточки, программистам — Си (с)

Arcueid1691
Посмотреть профиль
Найти ещё сообщения от Arcueid1691

Меркантильный кю
Участник клуба
Регистрация: 02.02.2008
Сообщений: 1,001
Сообщение от Arcueid1691

Какие в этом случае обнулится максимальный элемент матрицы или в процессе поиска обнулятся все элементы матрицы, которые больше нуля?

Мой мозг отказывается интерпретировать эту фразу
Алгоритм намного проще:
1. max1 = A[1][1]; max2 = A[1][1];
2. Бежим по матрице.
а) если очередной элемент б) если он > max2, но < max1, то max2 = A[i][j]
в) если он >= max1, то max2 = max1; max1 = A[i][j]

Росли вроде умными, выросли дурнями. (c)А.Васильев
Пользователь
Регистрация: 18.09.2009
Сообщений: 38
Эм, по-идее это не будет компилироваться:

 m1=0; for(int i=0;im1) m1 = a[i][j]; > a[i][j]=0; >

Переменная j у тебя существует только в области видимости вложенного цикла (только что проверил, Visual Studio 2005 ругается на нее в строчке

a[i][j]=0;

Если объявить счетчики вне циклов, то в той же злочастной строчке:

a[i][j]=0;

j будет равен y (последнее значение j, не удовлетворяющее условию). У меня в той же вижуалке он обнулил первые элементы каждой строки начиная со первой (нулевую пропустил).
И естесственно сругался «stack corrupted», т.к. на последней итерации обнуляет элемент a[2][3], что уже за пределами памяти матрицы.

А почему бы не находить сразу два максимума?

 int m1=0; int m2=0; for(int i=0;i m1) < m1 = a[i][j]; >else < if(a[i][j] >m2) m2 = a[i][j]; > > >

В итоге m2 будет второй максимум. Если нужен уникальный, т.е. в последовательности:
96 47 53 12 0 96 45
второй максимум — 53, то

if (a[i][j] > m1)

надо поменять на

if (a[i][j] >= m1)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *