Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/222: Рейтинг темы: голосов - 222, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 07.04.2018
Сообщений: 7

Максимальная длина монотонного фрагмента

10.04.2018, 05:43. Показов 48382. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана последовательность натуральных чисел, завершающаяся число 0. Определите наибольшую длину монотонного фрагмента последовательности (то есть такого фрагмента, где все элементы либо больше предыдущего, либо меньше).
Входные данные
Вводится последовательность целых чисел, оканчивающаяся числом 0 (само число 0 в последовательность не входит, а служит как признак ее окончания).

Выходные данные
Выведите ответ на задачу.

Примеры
входные данные
1
7
7
9
1
0
выходные данные
2
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.04.2018, 05:43
Ответы с готовыми решениями:

Максимальная длина монотонного фрагмента
Я написал вот такой, код, вроде тестирую, всё верно, а проверяющая система говорит что я неправ, помогите найти ошибку. Максимальная...

Максимальная длина одинаковых элементов массива
Я написал код, для нахождения максимальную длину одинаковых элементов массива. Но при вводе двух одинаковых чисел равное количество раз,...

Максимальная длина монотонного фрагмента
Дана последовательность натуральных чисел, завершающаяся число 0. Определите наибольшую длину монотонного фрагмента последовательности (то...

17
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
10.04.2018, 12:18
Python
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
#!/usr/bin/python3
 
a = [1, 7, 7, 9, 1, 0]
 
m1 = 0
m2 = 0
 
count = 0
for i in range(len(a)-1):
    if a[i] > a[i+1]:
        count += 1
    else:
        m1 = max(m1, count)
        count = 0
 
m1 = max(m1, count)
count = 0
for i in range(len(a)-1):
    if a[i] < a[i+1]:
        count += 1
    else:
        m2 = max(m1, count)
        count = 0
m2 = max(m1, count)
 
print(max(m1, m2))
Добавлено через 8 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/python3
 
arr = [1, 7, 7, 9, 1, 0]
 
def f(a):
    result = 1
    count = 1
    for i in range(len(a)-1):
        if a[i] > a[i+1]:
            count += 1
        else:
            result = max(result, count)
            count = 1
    return max(result, count)
 
 
m1 = f(arr[:-1])
m2 = f(list(reversed(arr[:-1])))
 
print(max(m1, m2))
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
10.04.2018, 13:53
itertools.groupby
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
10.04.2018, 13:57
Python
1
2
3
4
5
6
7
8
9
>>> def f(lst):
    d = {}
    for i in lst:
        d[i] = d.get(i,0) + 1
    return max(d.values())
 
>>> l = [0,1,1,1,2,3,4,4,4,4]
>>> f(l)
4
0
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
10.04.2018, 14:18
Niksonchik, в качестве шутки скорее (питон всего неделю изучаю)
Python
1
2
3
4
5
6
7
8
9
10
11
12
import itertools
 
a = [1, 3, 6, -8, 6, 6, -7, -2,  1, 2, 4, 0]
 
def max_seq(a, condition):
    it = map(condition, a, a[1:-1])
    return 1 + max(itertools.accumulate(it, lambda acc, x: acc * x + x))
m_inc = max_seq(a, lambda x1, x2: x1 < x2)
m_dec = max_seq(a, lambda x1, x2: x1 > x2)
result = max(m_dec, m_inc)
 
print(result)
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
10.04.2018, 15:11
сорри ошибся темой
0
0 / 0 / 0
Регистрация: 07.04.2018
Сообщений: 7
11.04.2018, 05:30  [ТС]
Ребят всем спасибо, но нужно без списков и массивов
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
11.04.2018, 11:13
Niksonchik, генератор?
0
0 / 0 / 0
Регистрация: 07.04.2018
Сообщений: 7
11.04.2018, 17:39  [ТС]
С помощью циклов
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
12.04.2018, 11:59
Niksonchik, цикл - это операция, а данные-то откуда возьмутся?
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
12.04.2018, 12:38
Цитата Сообщение от Niksonchik Посмотреть сообщение
Дана последовательность натуральных чисел, завершающаяся число 0.
Цитата Сообщение от Niksonchik Посмотреть сообщение
нужно без списков и массивов
последовательность в любом случае список или массив
вы уж как-то определитесь
1
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
12.04.2018, 13:05
Цитата Сообщение от vic5710 Посмотреть сообщение
вы уж как-то определитесь
Может топикстартер имел ввиду
считать каждую строку
засунуть ее в массив
найти в массиве

=)
0
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
12.04.2018, 13:33
Цитата Сообщение от IRIP Посмотреть сообщение
Может топикстартер имел ввиду
считать каждую строку
засунуть ее в массив
найти в массиве
Скорее всего вводится по числу и тут же обрабатывается без сохранения

Добавлено через 18 минут
Как-то так:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
m = 1
dec = 1
inc = 1
n1 = int(input('Введите число: '))
while n1:    
    m = max(inc, dec, m)
    n2 = int(input('Введите число: '))    
    if not n2: break
    if n1 > n2: dec, inc = dec + 1, 1               
    elif n1 < n2: inc, dec = inc + 1, 1        
    else: inc = dec = 1
    n1 = n2
print('Максимальна длина монотонной подпоследовательности: {0}'.format(m))
0
0 / 0 / 0
Регистрация: 07.04.2018
Сообщений: 7
12.04.2018, 19:59  [ТС]
Спс. Решил так:
Python
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
a=int(input())
b=int(input())
max=1
n=1
while 0==0:
    if b==0 or a==0:
        break    
    while a>b:
        if b==0:
            break        
        n+=1
        if n>max:
            max=n
            a=b
            b=int(input())
        else:
            a=b
            b=int(input())
    n=1
    while a<b:
        n+=1
        if n>max:
            max=n
            a=b
            b=int(input())
        else:
            a=b
            b=int(input())
    n=1
    while a==b:
        n=1
        a=b
        b=int(input())
print(max)
0
 Аватар для Semen-Semenich
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,300
13.04.2018, 12:58
Niksonchik, все намного проще
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
max_len = 0
temp_len = 1
a = int(input())
while a:
    b = int(input())
    if a == b:
        temp_len += 1
    else:
        if temp_len > max_len :
            max_len = temp_len
            temp_len = 1
    a = b
print(max_len)
0
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
13.04.2018, 13:02
Semen-Semenich, монотонная у ТС не в смысле одинаковых элементов, а в смысле возрастания, убывания, я выше приводил более простой код
0
 Аватар для Semen-Semenich
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,300
13.04.2018, 13:08
woldemas, упс это я не прочитал ну хотя как не крути элементы либо больше предыдущего, либо меньше а иначе это будет последовательность одинаковых элементов. или я что то не догоняю
0
0 / 0 / 0
Регистрация: 07.04.2018
Сообщений: 7
13.04.2018, 20:13  [ТС]
Я это уже понял
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.04.2018, 20:13
Помогаю со студенческими работами здесь

Максимальная длина монотонного фрагмента
Дана последовательность натуральных чисел, завершающаяся число 0. Определите наибольшую длину монотонного фрагмента последовательности (то...

Максимальная длина монотонного фрагмента (оптимизация решения)
Здравствуйте, уважаемые форумчане. Помогите, пожалуйста, оптимизировать решение. Один тест не проходит по времени. Вот программа: ...

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

Определите наибольшую длину монотонного фрагмента последовательности
Дана последовательность чисел, завершающаяся числом 0 (0 — признак окончания ввода, не входит в последовательность). Определите наибольшую...

Определите наибольшую длину монотонного фрагмента последовательности
Дана последовательность натуральных чисел, завершающаяся число 0. Определите наибольшую длину монотонного фрагмента последовательности (то...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru