0 / 0 / 0
Регистрация: 29.06.2017
Сообщений: 11
1

Решена задача(как я полагаю :D), но хочется другое решение

03.08.2019, 13:15. Показов 3627. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ввести последовательность S и вывести второй максимум этой последовательности, т. е. элемент a∈S : ∃ b∈S : b>a и a⩾c ∀c∈S, c≠b. Если второго максимума нет, вывести NO. Пользоваться функциями наподобие max() или sorted() нельзя.

Input:

3,4,5,6,7

Output:

6


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
S=eval(input())
  
max1=max2=0
 
for i in S:
     a = False
     if i > max1:
         max2 = max1
         max1 = i
     elif i >= max2 and i < max1:
         max2 = i
         a = True
 
 if max2==0 and a== False:
     print("no max")
 else:
     print(max2)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.08.2019, 13:15
Ответы с готовыми решениями:

Решение СЛАУ методом простых итераций, задача решена, только написать код осталось
решить СЛАУ с точностью е=10 в степени(-4) 4*x1-x2-x3=2 x1+5*x2-2*x3=4 x1+x2+4*x3=6 ...

Нарисовал такое, а хочется другое
нарисовал такую фигуру с вводимыми коордионатами: ***** ***** ***** ***** ***** А вот как...

Задача на размышление (приведение типов или, может, другое решение)
Есть класс MasterPanel, одним из элементов которого является панель Panel. Элементы MasterPanel...

Компьютер угадывает число. Задача решена, как считаете? (вектор и цикл)
Компьютер должен угадать задуманное пользователем число с 7-ми попыток. Хотел написать с...

9
4796 / 3196 / 1123
Регистрация: 21.03.2016
Сообщений: 7,913
03.08.2019, 15:05 2
Лучший ответ Сообщение было отмечено Kktin как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def max_elem(s):
    # функция нахождения максимального эл.
    max_ = s[0]
    for el in s:
        if el > max_:
            max_ = el
    return max_
 
def second(s, first_max):
    # функция нахождения второго максимального эл.
    second_max = s[0]
    for el in s:
        if el < first_max and el >= second_max :
            second_max = el
    return second_max if second_max != first_max else 'NO'
    
        
s = list(map(int,input().split(',')))
print(second(s, max_elem(s)))
или
Python
1
2
3
4
5
6
7
8
9
10
11
12
def max_elem(s):
    index_max = 0
    max_ = s[index_max]
    for i,el in enumerate(s):
        if el > max_:
            index_max = i
    return s.pop(index_max)
        
s = list(map(int,input().split(',')))
first_max = max_elem(s)
second_max = max_elem(s)
print(second_max if second_max != first_max else 'NO')
1
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
17962 / 9485 / 2683
Регистрация: 21.10.2017
Сообщений: 21,262
03.08.2019, 15:50 3
Python
1
2
3
4
5
6
7
8
def foo(s: list):
    for i in range(len(s) - 1):
        if s[i] > s[i + 1]:
            return s[i + 1]
    return 'NO'
 
 
print(foo(list(reversed(sorted(map(int, input().split(',')))))))
1
Автоматизируй это!
Эксперт Python
7351 / 4529 / 1202
Регистрация: 30.03.2015
Сообщений: 13,088
Записей в блоге: 29
03.08.2019, 19:40 4
Лучший ответ Сообщение было отмечено Kktin как решение

Решение

Kktin, еще вариантик
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def get_max(a_list):
    if not a_list:
        return 'NO'
    _max = a_list[0]
    for element in a_list:
        if element > _max:
            _max = element
    return _max
 
 
def second_max(a_list):
    n_list = list(filter(lambda x: x != get_max(a_list), a_list))
    return get_max(n_list)
 
 
assert second_max([3, 4, 5, 6, 7]) == 6
assert second_max([2, 1, 2]) == 1
assert second_max([-5, -1, 0]) == -1
assert second_max([2, 2, 2]) == 'NO'
Цитата Сообщение от Kktin Посмотреть сообщение
Решена задача
да? а попробуй список с отрицательными числами на своем коде
1
2 / 2 / 0
Регистрация: 10.07.2019
Сообщений: 9
03.08.2019, 20:37 5
Взгляните на такое решение:

Python
1
2
3
4
5
6
7
8
9
10
11
S = eval(input())
 
a = "NO"
b = S[0]
 
for item in S:
  if item > b:
    a = b
    b = item
 
print(a)
1
4796 / 3196 / 1123
Регистрация: 21.03.2016
Сообщений: 7,913
03.08.2019, 20:50 6
iSmokeJC,
Цитата Сообщение от Kktin Посмотреть сообщение
Пользоваться функциями наподобие max() или sorted() нельзя
print(foo(list(reversed(sorted(map(int, input().split(',')))))))
1
Автоматизируй это!
Эксперт Python
7351 / 4529 / 1202
Регистрация: 30.03.2015
Сообщений: 13,088
Записей в блоге: 29
03.08.2019, 21:21 7
Цитата Сообщение от Raduma Посмотреть сообщение
Взгляните на такое решение:
а ты подай на вход 7,6,5
1
1040 / 575 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
04.08.2019, 11:43 8
Реализовываешь сортировку и извлекаешь второй с конца элемент. Профит.
1
Автоматизируй это!
Эксперт Python
7351 / 4529 / 1202
Регистрация: 30.03.2015
Сообщений: 13,088
Записей в блоге: 29
05.08.2019, 12:52 9
Лучший ответ Сообщение было отмечено Kktin как решение

Решение

еще вариант, использует одну из "батареек" питона, то есть встроенный модуль

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from heapq import nlargest
 
 
def second_max(a_list: list):
    result = nlargest(2, set(a_list))
    if not result or len(result) < 2:
        return 'NO'
    return result[1]
 
 
assert second_max([3, 4, 5, 6, 7]) == 6
assert second_max([2, 1, 2]) == 1
assert second_max([-5, -1, 0]) == -1
assert second_max([2, 2, 2]) == 'NO'
2
2 / 2 / 0
Регистрация: 10.07.2019
Сообщений: 9
06.08.2019, 11:42 10
Цитата Сообщение от Welemir1 Посмотреть сообщение
а ты подай на вход 7,6,5
Исправляюсь)

Python
1
2
3
4
5
6
7
8
9
10
11
S = eval(input())
 
a = b = S[0]
 
for item in S:
  if (item >= b):
    a, b = b, item
  elif (item > a) or (a == b):
    a = item
 
print("NO" if a == b else a)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.08.2019, 11:42
Помогаю со студенческими работами здесь

Каждую цифру числа необходимо вывести в новой строке (Правильно ли решена задача? Как можно было лучше?)
Задача: Составить программу, которая будет считывать введённое число(любое). После чего, каждую...

Денвер не читает скрипт (как полагаю я)
Здраствуйте, у меня возник вопрос, есть страничка, которая нормально открываеться с расширением...

Хочется проверить решение по алгебре
Многочлен f(x) принадлежит C при делении на (2x+1) дает в остатке 1, а при делении на (3x+1) дает в...

Правильно ли решена задача?
Всем добрый день. Вот решил сам решить задачку по Java c выводом в консоль. Порылся в инете и нашел...

Верно ли решена задача?
Каждая буква слова ИНФОРМАТИКА написана на разных карточках. Сколькими различными способами можно...

Правильно ли решена задача?
Условие Даны целые положительные числа M , N , число D и набор из M чисел . Сформировать матрицу...

Правильно ли решена задача?
Верно ли я решил данную задачу?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru