Максимальное количество идущих подряд элементов питон

Не получается посчитать максимальную, подряд идущую последовательность символов ‘ABA’

Допустим, есть последовательность символов ‘ABAABABBBBBBBB’ Моя задача, найти максимальное количество подряд идущих последовательностей ‘ABA’ В данном случае, ответ будет m = 2. Первые 6 символов. У меня прога печатает m=1. Почему-то каждый раз обнуляя переменную k. Не могу понять почему.

s = 'ABAABAABABBBB' print (s) k=0 m = 0 for i in range(2,len(s)): if s[i-2] == 'A' and s[i-1]=='B' and s[i]=='A': k=k+1 m = max(k,m) i += 2 else: k=0 print(m) 

то, что вы изменили переменную i , не изменит её значение в следующем цикле. Надо переделать это в цикл while

тогда почему, если я пробую вывести переменные s[i-2],s[i-1],s[i], когда выполняется условие. То у меня выводятся ABA, потом снова ABA? но k будет так и равно 1?

@newman допустим, будет ‘ABAABABBBBBBBBABAABAABAABA’. Самая длинная последовательность ABA = 4. Нам нужно пробегаться по строке/списку смотреть, если последовательность обрывается, то заносить в переменную m, а значение k обнулять, тем самым пытаясь найти самую длинную цепочку ‘ABA. Не могу понять, как это сделать

1 ответ 1

Пример не очень корректный. Все же по нему получается 3 подстроки подряд. Плюс с константами немного подошиблись и с логикой. Ну и как было правильно замеченно, тут цикл for не подходит. Нужен while

s = 'ABAABABBABABBBB' print (s) m = 0 k = 0 i = 2 while i < len(s): if s[i-2] == 'A' and s[i-1]=='B' and s[i]=='A': k += 1 i += 3 else: i += 1 m = max(k, m) k = 0 print(m) 

Т.е. логика примерно следующая: если условие соблюдается, то увеличиваем счетчик количества подстрок k в текущей последовательности.

Как только условие не сработало, то сравниваем число подсток в последовательности, с тем что уже было. Это функция max и переменная m. А счетик подстрок k обнуляем.

Ну и если условие выполняется, то переходим на три символа вперед. А если нет - то только на один

Источник

Определить, какое наибольшее число подряд идущих элементов последовательности равны друг другу

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

1 2 3 4 5 6 7 8 9 10 11 12 13
p=int(input()) c=1 b=0 while p!=0: v=int(input()) p,v=v,p if v==p: c+=1 if c>b: b=c if p!=v: c=1 print(b)

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

Читайте также:  Https mail yandex ru unsubscribe html

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

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

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

Лучший ответ

Сообщение было отмечено mik-a-el как решение

Решение

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
p = int(input()) # previous number c = 1 # current sequence lenth b = 1 # maximum sequence lenth while True: v = int(input()) # current number if v == p: if v == 0: break c += 1 else: if c > b: b = c p = v c = 1 print(b)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
a = int(input()) aMax1 = a aMax2 = 0 n = 1 while a != 0: a = int(input()) if a > aMax1: aMax2 = aMax1 aMax1 = a n = 1 elif aMax1 > a > aMax2: aMax2 = a elif a == aMax1 : n += 1 print(n)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
a=int(input()) b=int(input()) n=1 m=0 while a!=0 and b!=0: if a==b: a=b b=int(input()) n+=1 if a!=b!=0: m=max(n,m) n=1 a=b b=int(input()) print(max(n,m))

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

Определить какое наибольшее число подряд идущих купе полностью свободны
В плацкартном вагоне 54 места, пронумерованных числами от 1 до 54. Вагон разбит на 9 купе. Первые.

Определить наибольшее число идущих подряд одинаковых элементов в массиве
Помогите изменить программу. Дана: Определить наибольшее число идущих подряд положительных.

Определить наибольшее число идущих подряд положительных элементов в массиве А
Составить алгоритм и программу нахождения заданного экстремального элемента или его порядкового.

Определить наибольшее число идущих подряд положительных элементов в массиве
1)Дан массив A из N элементов. Определить наибольшее число идущих подряд положительных элементов в.

Источник

В массиве определить максимальное количество

В массиве A(N) определить максимальное количество подряд идущих положительных элементов, не прерываемых ни нулями, ни отрицательными элементами.

В массиве определить максимальное количество
Здравствуйте. Помогите, пожалуйста, написать программу. В массиве A(N) определить максимальное.

Определить максимальное количество одинаковых элементов в массиве
Дан целочисленный массив размера N. Определить максимальное количество его одинаковых элементов.

в массиве F (k) определить максимальное количество расположенных по убыванию элементов, стоящих подряд
помогите написать програму: в массиве F (k) определить максимальное количество расположенных по.

Определить в массиве максимальное количество идущих подряд и упорядоченных по возрастанию положительных чисел
Задан целочисленный массив Х из 20 элементов. Определить максимальное количество идущих подряд и.

Читайте также:  Html фильтрация данных таблицы

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

Luna98, доброго дня! в чем у вас трудность?

Добавлено через 18 минут

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
# есть список my_list = [-7, 6, 3, -3, -8, -2, -5, 0, -8, 2, 6, 1] # сделаем счетчик count = 0 # и максимальное количество подряд идущих положительных элементов max_lenght = 0 # переберем все for item in my_list: # если элемент положителен if item > 0: # прибавим счетчик на 1 count += 1 # проверим значение счетчика с макс. количеством подряд эл-тов if count > max_lenght: # если счетчик превысил, то присвоим значение счетчика max_lenght max_lenght = count # если элемент отрицателен то сбросим счетсчик и будем считать заново elif item  0: count = 0 print(max_lenght)

В заданном массиве определить номер 1-го рядка, который имеет максимальное количество положительных элементов
В заданyом массиве У(n, m) определить номер 1-го рядка, который имеет максимальное количество.

В одномерном массиве найти максимальное количество четных элементов и максимальное количество нечетных элементов, расположенных рядом
В одномерном массиве найти максимальное количество четных элементов и максимальное количество.

Максимальное количество строк в массиве
подключаю файл с несколькими массивами require_once "test.php"; // внутри обычные массивы.

Источник

Python-сообщество

[RSS Feed]

  • Начало
  • » Центр помощи
  • » Задача с pythontutor

#1 Июль 18, 2016 14:26:11

Straik32423 От: Ростов-на-Дону, Россия Зарегистрирован: 2016-05-18 Сообщения: 46 Репутация: 0 Профиль Отправить e-mail

Задача с pythontutor

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

#2 Июль 18, 2016 15:33:16

Задача с pythontutor

Нужно две переменные: одна - под максимальное число равных элементов, другая - под текущее число равных элементов. И нужно ещё одну переменную под предыдущий элемент.

Берёшь каждый элемент, сравниваешь его с предыдущим и там три ситуации:
1) Элемент - ноль. Нужно сравнить максимальное число с текущим числом и заменить максимальное на текущее, если текущее больше максимального.
2) Элемент - не ноль и равен предыдущему элементу. Увеличить текущее число.
3) Элемент - не ноль и не равен предыдущему элементу. Сравнить максимальное число с текущим числом и заменить максимальное на текущее, если текущее больше максимального. Установить текущее число в 1.

Отредактировано py.user.next (Июль 18, 2016 15:50:06)

#3 Июль 19, 2016 13:35:03

Straik32423 От: Ростов-на-Дону, Россия Зарегистрирован: 2016-05-18 Сообщения: 46 Репутация: 0 Профиль Отправить e-mail

Задача с pythontutor

py.user.next
Нужно две переменные: одна - под максимальное число равных элементов, другая - под текущее число равных элементов. И нужно ещё одну переменную под предыдущий элемент.Берёшь каждый элемент, сравниваешь его с предыдущим и там три ситуации:1) Элемент - ноль. Нужно сравнить максимальное число с текущим числом и заменить максимальное на текущее, если текущее больше максимального.2) Элемент - не ноль и равен предыдущему элементу. Увеличить текущее число.3) Элемент - не ноль и не равен предыдущему элементу. Сравнить максимальное число с текущим числом и заменить максимальное на текущее, если текущее больше максимального. Установить текущее число в 1.

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

i = -1 k = -1 e = 1 max = 1 while i != 0: i = int(input()) if i == k: e += 1 else: if e > max: max = e e = 0 k = i print(max) 

Вот список цифр, при которых результат неверный. Выводит 3 вместо 4…

Отредактировано Straik32423 (Июль 19, 2016 13:37:06)

Источник

Найти максимальное количество подряд идущих совпадающих элементов в целочисленном массиве длиной в 30 элементов

Найти максимальное количество подряд идущих совпадающих элементов в целочисленном массиве длиной в 30 элементов.
На языке Python.

Посчитать максимальное количество подряд идущих отрицательных элементов в целочисленном массиве
3) Посчитайте максимальное количество подряд идущих отрицательных элементов в целочисленном массиве.

Подсчитать максимальное количество подряд идущих совпадающих элементов
2. Опишите на русском языке или одном из языков программирования алгоритм подсчета максимального.

В массиве найти максимальное количество подряд идущих одинаковых элементов
На вход в первой строке подается целое положительное число N, а во второй строке — массив из N.

Найти максимальное количество подряд идущих отрицательных элементов в заданном массиве
Помогите решить задачу: 2. Опишите алгоритм подсчета максимального количества подряд идущих.

Смотрите в сторону динамического программирования.

Добавлено через 50 минут
С динамическим программированием я, конечно, поторопился.)
Вот, вроде работает:

1 2 3 4 5 6 7 8 9 10 11 12 13
import random lst = [random.randint(0, 10) for i in range(30)] print(lst) m_count = 1 count = 1 for i in range(len(lst)-1): if lst[i] == lst[i+1]: count +=1 elif m_count  count: m_count = count count = 0 print(m_count)

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

В заданном массиве подсчитать максимальное количество идущих подряд отрицательных элементов
Помогите надо в 27-30 что то изменить чтобы работало Дан одномерный массив А, состоящий из N.

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

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

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

Источник

Оцените статью