0 / 0 / 0
Регистрация: 07.04.2018
Сообщений: 7

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

10.04.2018, 05:43. Показов 48425. Ответов 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
5228 / 3474 / 1174
Регистрация: 21.03.2016
Сообщений: 8,301
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
5228 / 3474 / 1174
Регистрация: 21.03.2016
Сообщений: 8,301
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru